在使用execl调用的程序上设置gdb断点

时间:2016-08-03 12:13:49

标签: c debugging gdb

我打开一个新线程,因为我回复了一个正在做我想做的现有人...但我不能得到相同的结果......

以下是主题:gdb debugging process after exec call

我只想调试一个" execled"应用gdb。

这是我的C程序的样子:

$ ls ABC_2016*
ABC_20161231225950.sha1  ABC_20169231225990.sha1

$ find . -type f -name 'ABC_2[0-9][0-9][0-9][0-1][0-2][0-3][0-9][0-2][0-2][0-5][0-9][0-5][0-9].sha1'
./ABC_20161231225950.sha1

当我在线时:

if( !fork() ) 
   execl("./exec/nuitretard","nuitretard","S","1000","000","N",ZZTOP);
else wait(&status);
Recup();

我在gdb中做:

97          if( !fork() )

我把我的gdb"打破主要"在所有主要功能上命令断点不是吗?所以,如果我按下一行,我应该进入nuitretard的主要号码吗? 但是当我这样做时,我得到了这个:

(gdb) set follow-fork-mode child                                                
(gdb) break main
Breakpoint 2 at 0x40198c: main. (2 locations)                                   
(gdb) n
[New process 9034]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[Switching to Thread 0x7ffff7eb3780 (LWP 9034)]
98        execl("./exec/nuitretard","nuitretard","S","1000","000","N",ZZTOP);

所以我没有停留在我的" nuitretard"程序:/

我做错了什么? 谢谢你的帮助。

编辑:我显然用-g编译了两个程序来调试。我在Linux ubuntu上。

0 个答案:

没有答案