我正在做一个大的应用程序(ns2),并在某处有人把出口(1)没有任何debugging或打印语句,它正在执行。 我不想手动检查每一个调用exit的文件来找出程序退出的原因。 是可以确定程序退出的地方吗? 这在Linux上运行,并用C ++编码。 在gdb中可以这样做吗?
当然。 在出口(3)的开始处放置一个断点。 当它坏了,看看堆栈。
第二个选择,在桁架下运行(1)(我很确定有一个Linux版本的桁架)。
或者strace(1) 。
事实上,我在另一个问题上碰到另一种方法: 这里有一个链接 。
如果您提供自己的exit()
,那么将优先使用该实现。 构建,在调试器中加载它,在exit()
上放置一个断点,运行程序,并查看它来自哪里。
或者像查理说的那样,只要在库的exit()
放一个断点即可。 如果您想要运行其他特定位代码,请使用上述方法。
由于您似乎有权访问源代码,我只需搜索该呼叫即可退出并分析代码。 那么你也可以通过用更合适的东西替换出口来修复它。
如果你所有的代码都在目录src中a
grep -r exit src
应该找出所有出现的单词exit
如果您无法访问代码,请使用查理的建议。