2011-09-25 3 views
3

Есть ли какие-либо простые способы отладки разветвленных дочерних процессов в * nix, без необходимости их спячки и создания новых экземпляров gdb, используя ps для получения pid ребенка? Есть ли отладчики, которые это делают?Отладка нескольких разветвленных процессов в * nix

ответ

6

Вы уже можете сделать это, используя gdb. Вот как это делается:

(gdb) set detach-on-fork off 
(gdb) set follow-fork-mode child 
(gdb) catch fork # use breakpoint if catch fork not available 

Затем в какой-то момент вы достигнете своей вилки. Перепрыгните через него, и gdb должен сообщить вам, что есть новый процесс.

[New process 813] 

На этом этапе вы должны рассматривать "" подчиненные

(gdb) info inferiors 
    Num Description  Executable 
* 2 process 813  /home/cnicutar/fork 
    1 process 810  /home/cnicutar/fork 

Чтобы переключиться на другие ниже, используйте

(gdb) inferior 1 
[Switching to inferior 1 [process 810] (/home/cnicutar/fork)] 
[Switching to thread 1 (process 810)] 

(gdb) info inferiors 
    Num Description  Executable 
    2 process 813  /home/cnicutar/fork 
* 1 process 810  /home/cnicutar/fork 

Надеется, что это помогает :-)

+0

Спасибо очень много: D – whalebiologist

Смежные вопросы