Souvent, j'écris du code Python et je veux appeler le débogueur à un moment donné. Si vous connaissez la situation que vous souhaitez appeler à l'avance, vous pouvez simplement spécifier un point d'arrêt dans pdb ou incorporer "import pdb; pdb.set_trace ()" dans votre code, mais c'est un timing complètement "arbitraire". Ce n'est pas le cas. Lorsque j'ai vérifié s'il était possible de s'attacher à un processus en cours d'exécution dans gdb, StackOverflow avait une méthode élégante, je l'enregistrerai donc ici.
python - Attaching a process with pdb - Stack Overflow
python
import signal
def handle_pdb(sig, frame):
import pdb
pdb.Pdb().set_trace(frame)
if __name__ == '__main__':
signal.signal(signal.SIGUSR1, handle_pdb)
Ce que nous faisons est aussi simple que d'appeler pdb lorsque le signal SIGUSR1 est appelé. Vous pouvez l'utiliser sauf si vous utilisez déjà SIGUSR1 à d'autres fins. Vous pouvez utiliser d'autres signaux disponibles.
Le gdb d'aujourd'hui a intégré python, qui permet des opérations avancées. Si vous avez un symbole de débogage pour python en cours d'exécution, je pense qu'il est possible de l'attacher directement avec gdb et de tracer le code source au niveau de python. Le matériel présenté par M. Nojima au groupe d'étude Daiunetsu Debian en 2013 sera utile. Ici, nous faisons le débogage au niveau de la source de php. La gestion des symboles de débogage diffère selon le système d'exploitation, la distribution et la méthode d'installation, veuillez donc lire ce point comme il convient.
Recommended Posts