2017-02-24 1 views
0

Sur Windows, je peux définir globalflag pour associer le début d'un programme avec un débogueur, donc même lorsque j'appelle un programme d'un script, le débogueur démarre mon programme et peut casser une ligne de code.Puis-je définir un programme Linux à démarrer et à attacher par gdb?

Alors, comment faire cela avec gdb sur linux? Par exemple, j'ai /home/my/a.out compilé avec l'option -g par gcc, je souhaite qui appelle toujours en a.out, il sera élevé par gdb:

  1. Dois-je modifier un fichier système pour dire, /home/my/a.out devrait être démarré par gdb et attacher automatiquement? Comment faire GDB auto-attacher, puis rompre à la main et exécuter?

+0

pouvez-vous remplacer ce programme par un script avec le même nom qui exécute le programme, puis attachez-le à gdb? –

Répondre

1

Dois-je modifier certains fichiers système pour dire /home/my/a.out devrait commencer par gdb et attacher automatiquement?

Vous n'avez pas besoin de modifier tout système fichiers à ce achive. Modifiez /home/my/a.out à la place.

Déplacer binaire d'origine vers un nouveau nom:

mv /home/my/a.out /home/my/a.out.orig 

Remplacer /home/my/a.out avec un script shell:

cat > /home/my/a.out <<'EOF' 
#!/bin/sh 
exec gdb -ex start --args /home/my/a.out.orig "[email protected]" 
EOF 
chmmod +x /home/my/a.out 

Comment faire attacher auto-gdb, puis briser à 'main' et courir?

Le script ci-dessus le fera automatiquement.