确定申请的退出点。 C ++ / Linux的

时间:2009-04-19 00:30:40

标签: c++ linux

我正在开发一个大型应用程序(ns2),并且有人在那里放置了一个退出(1),没有任何调试或打印语句,并且正在执行它。我不想手动检查调用exit的每个文件来找出程序退出的原因。有可能确定程序退出的位置吗?它在Linux上运行并使用C ++编码。是否可以在gdb中执行类似的操作?

3 个答案:

答案 0 :(得分:8)

不确定。在退出开始处设置断点(3)。当它破裂时,看看堆栈。

第二个选择,在truss下运行它(1)(我很确定有一个Linux版本的truss。)

strace(1)

更新

事实上,我在另一个问题中遇到了另一种方法:here's a link

答案 1 :(得分:3)

如果您提供自己的exit()实现,那么将优先使用该实现,而不是库中的实现。{p>构建它,在调试器中加载它,在exit()上放置一个断点,运行程序,看看它来自哪里。

或者如Charlie所述,只需在库exit()上设置断点即可。如果您想要运行其他一些特定代码,请使用上面的方法。

答案 2 :(得分:0)

由于您似乎可以访问源代码,我只需搜索退出调用并分析代码。然后你很可能也会通过用更合适的东西替换退出来修复它。

如果您的所有代码都在 src 目录中

grep -r exit src

应该找到单词exit

的所有出现

如果您无法访问该代码,请查看Charlie的建议。