【问题标题】:How can I find a reason that a program stalls?如何找到程序停止的原因?
【发布时间】:2018-03-03 14:15:22
【问题描述】:

我正在处理一个控制汽车的程序。 该程序具有相当大的规模,并且是由其他人制作的。 所以我不完全理解它是如何工作的。 但我必须应用它并让汽车移动。

我面临的问题是程序经常卡顿,没有错误,没有分段。

如果它崩溃了,我可以用 gdb 或类似的东西来追踪原因。

但它不会崩溃,它会默默停止。

我怎样才能找到原因?

【问题讨论】:

  • 这太宽泛了。有很多方法,从添加打印语句,到添加调试器断点,以及仅对代码进行推理。基本上,任何标准的调试技术。

标签: linux debugging segmentation-fault controls


【解决方案1】:

根据您的描述 - 程序静默停止 - 我了解您的程序简单而优雅地退出,但不是您预期的流程。
这可能有很多原因 - 例如,您的程序可能进入非法流程并且某些子组件(例如标准库或其他库)决定程序应该退出,因此调用 c-runtime exit() 或直接调用Kernel32!ExitProcess().
调试此流程的最佳方法是附加调试器并在这两个方法上设置断点并找出谁在调用它们。

如果您的意思是您的程序进入死锁并且停止然后你还需要附加一个调试器并找出谁被卡住了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-30
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 2018-05-07
    相关资源
    最近更新 更多