我通常使用GDB来调试某些代码 - 尽管这是我在愤怒中实际使用它的第一个项目 - 但是一个特定的可执行文件会给我带来问题。它是作为一个单独的进程产生的,我想调试前几行,所以我添加了一个循环,以便我可以在闲暇时将GDB附加到进程,然后跳转到下一行。问题是,它比下一行跳得更远。我确定代码和源是同步的,因为循环的添加在源级别都是可见的并且是发生的事情(即应用程序"挂起"并且cpu与100%挂钩)。在未进行调试时(以及删除初始循环时),应用程序似乎表现良好。我该如何开始诊断这个问题?这是GDB的最新版本,我正在调试c ++ exes。
答案 0 :(得分:0)
为什么不把循环写为
,而不是强制进程跳转int loopflag = 0;
while (loopflag == 0)
sleep(1);
然后使用gdb
设置loopflag
非零?