我怎样才能找到程序停止的原因?
How can I find a reason that a program stalls?
我正在处理一个控制汽车的程序。
这个程序规模挺大的,而且是别人做的。
所以我不完全理解它是如何工作的。
但我必须应用它并使汽车移动。
我面临的问题是程序经常停顿,没有错误,没有分段。
如果它崩溃了,我可以用 gdb 或类似的东西追踪原因。
但它并没有崩溃,它静静地停止了。
如何找到原因?
根据您的描述 - 程序静默停止 - 我了解到您的程序简单而优雅地退出,但不是从您预期的流程中退出。
发生这种情况的原因有很多 - 例如,您的程序可能进入了非法流程,某些 sub-component,例如标准库或其他库决定程序应该退出,因此调用 c-runtime exit()
或直接调用Kernel32!ExitProcess()
。
调试此流程的最佳方法是附加调试器并在这两个方法上设置断点并找出调用它们的人。
如果您的意思是您的程序进入死锁并暂停,那么您还需要附加调试器并找出卡住的对象。
我正在处理一个控制汽车的程序。 这个程序规模挺大的,而且是别人做的。 所以我不完全理解它是如何工作的。 但我必须应用它并使汽车移动。
我面临的问题是程序经常停顿,没有错误,没有分段。
如果它崩溃了,我可以用 gdb 或类似的东西追踪原因。
但它并没有崩溃,它静静地停止了。
如何找到原因?
根据您的描述 - 程序静默停止 - 我了解到您的程序简单而优雅地退出,但不是从您预期的流程中退出。
发生这种情况的原因有很多 - 例如,您的程序可能进入了非法流程,某些 sub-component,例如标准库或其他库决定程序应该退出,因此调用 c-runtime exit()
或直接调用Kernel32!ExitProcess()
。
调试此流程的最佳方法是附加调试器并在这两个方法上设置断点并找出调用它们的人。
如果您的意思是您的程序进入死锁并暂停,那么您还需要附加调试器并找出卡住的对象。