A partir do iOS 5, é possível fazer remote debug de qualquer aba aberta no Mobile Safari, através do famoso Inspector do WebKit no Desktop enquanto se navega no celular/emulador.

Se você tiver iOS 6 em diante, o processo é extremamente simples, bastando ter o Safari mais recente instalado no Mac. Antes, você precisa habilitar essa função no seu aparelho (ou no emulador). Vá em Ajustes > Safari > Avançado e marque a opção Inspetor Web:

Ajustes, Safari, Avançado e marque a opção Inspetor Web
Como habilitar o debug remoto no iOS 6

Agora abra o Safari no Mac e vá nas Preferências > Avançado e marque a opção para mostrar o menu Develop no menu. Por fim, basta conectar o cabo USB no aparelho e no computador (ou só abrir o emulador). Para abrir o inspetor, vá no Safari do Desktop em Develop e deve aparecer seu aparelho/emulador listado, dando acesso a todas as abas abertas.

Develop, iPhone Simulator, abas
Debugando meu blog no emulador do iOS pelo Safari do Mac

(tenho também um post sobre debug remoto no Chrome Mobile do Android)

iOS 5

No iOS 5, o debug já existe mas é um pouco mais complicado, exigindo comandos mais complexos.

Criei então um script bash que abre o emulador do iOS 5 e conecta o debugger nele via Safari. É bastante útil pra desenvolvimento Web mobile. Basta rodar o script no Mac após ter instalado o XCode mais novo que inclui o emulador do iOS 5.

Após rodar no terminal, abra o Mobile Safari dentro do emulador e navegue até a página que quer debugar. Depois, volte ao terminal e dê enter para o script continuar e capturar o debug. Ele vai abrir o Safari no seu Desktop com o Web Inspector.

#!/bin/bash

# Open iPhone Simulator on default location for XCode 4.3
open /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone\ Simulator.app

# Open mobile safari
echo Open mobile safari on emulator and press return
read

# Plug debug to MobileSafari.app
echo Debugging
MobileSafari_PID=$(ps x | grep "MobileSafari" | grep -v grep | awk '{ print $1 }')

if [ "$MobileSafari_PID" == "" ]; then
  echo "Mobile Safari.app must be running in the Simulator to enable the remote inspector."
  exit
else

  cat <<EOM | gdb -quiet > /dev/null
  attach $MobileSafari_PID
  p (void *)[WebView _enableRemoteInspector]
  detach
EOM
fi

# Open debugger in Safari.app
open -a /Applications/Safari.app http://localhost:9999
iPhone no emulador Safari com inspector aberto
Debugando o sergiolopes.org no Mobile Safari do emulador

Há também um gist disponível com esse código. O código do gdb eu peguei nesse post aqui – lá você também vê como conectar o debug a um aparelho real com iOS, além do emulador.

Se você precisa debugar uma versão mais antiga do iOS ou não tem um Mac a disposição, recomendo testar as ferramentas Adobe Edge Inspect e Weinre.


Atualização Ago/2013: Adicionei informações sobre iOS 6.