我有一个依赖于外部共享库的程序,但是在库内的函数执行之后,我就失去了使用断点的能力。
在执行这个函数之前,我可以像正常人一样中断和单步执行,但在完成之后,它永远不会中断。如果我试着用的话,它甚至不会在主机上坏掉。
start
第二次执行程序。这不是一个内联函数问题,因为我之前已经讨论过这些函数,当我评论这个特殊的函数时,一切都会重新开始工作。
以前有人遇到过这样的事情吗?我能做什么?
使用gdb 7.1和gcc 3.2.3
编辑:
从用户那里得到一些提示后,我发现这个过程在库调用中是分叉的。我不知道它在做什么(我真的不在乎)。我能补偿这个吗?作为孩子,我一直在尝试follow fork模式,但我真的很困惑,一旦它分叉了会发生什么,我似乎不知道如何继续执行或做任何有用的事情。
编辑:
进一步调查。据我所知,gdb在某个地方丢失了所有的符号信息。第二次运行后,所有符号解析为@plt地址,而不是第一次运行时解析为的实际地址。就像第二次加载进程一样,它会丢失第一次获得的所有信息,并拒绝重新加载。我很困惑!!
编辑:
所以我把这个问题追溯到一个波本电话的工作上。显然GDB对波本不好?一旦我脱离了波本的工作流程,我就失去了所有的符号。我也在网上读过一些关于这个的报道。
有什么希望吗
?