我有以下问题:我的应用程序以代码1退出。我想在libc的出口处设置断点以了解导致这种情况的原因,但是我不知道如何做到这一点。我正在使用MSVC 2012.任何帮助将不胜感激。
答案 0 :(得分:0)
使用atexit()
和一个小实用程序函数或全局析构函数。问题是,当它退出时,任何导致它退出的堆栈框架早已消失。另请注意,该程序可能根本不会调用exit()
,但可能会调用TerminateProcess()
。文本说“退出”的事实并不意味着调用exit()
函数,从main()
返回具有相同的效果。
我的建议是在调试器中单步执行它以找出导致程序退出的代码。这应该可以让你快速解决问题。还要检查调试输出是否有异常情况,例如未捕获的异常。请注意,“第一次机会异常”消息具有误导性,因为即使捕获到异常,它们也会被写入。但是,如果您怀疑,可以将IDE配置为停止在引发异常的位置,这样可以在某些情况下更容易找到该位置。