gpt4 book ai didi

c - 使用 gdb 运行时 fatal error 消失了

转载 作者:行者123 更新时间:2023-12-04 06:20:56 29 4
gpt4 key购买 nike

我有一个程序会在测试用例中产生 fatal error ,我可以通过读取日志和 fatal error 的堆栈跟踪来定位问题 - 结果表明对空指针进行了读取操作。

但是当我尝试将 gdb 附加到它并在可疑代码周围设置断点时,就无法观察到空指针!该程序运行顺利,没有任何错误。

这是一个单进程、单线程的程序,我之前没有经历过这种事情。谁能给我一些意见?谢谢。

附加:我还尝试在致命触发代码之前调用 pause() 系统调用,并希望程序在致命点之前休眠,然后在其上即时附加 gdb,遗憾的是,没有发生致命事件。

最佳答案

不看代码只是猜测,但调试器有时会这样做:

  • 他们为你初始化某些东西
  • 操作时间已更改

  • 我没有关于 GDB 的报价,但我有一个关于 valgrind 的报价(当然,两者都做 疯狂地 不同的事情..)

    My program crashes normally, but doesn't under Valgrind, or vice versa. What's happening?

    When a program runs under Valgrind, its environment is slightly different to when it runs natively. For example, the memory layout is different, and the way that threads are scheduled is different.



    GDB 也是如此。

    Most of the time this doesn't make any difference, but it can, particularly if your program is buggy.



    所以真正的问题可能在你的程序中。

    关于c - 使用 gdb 运行时 fatal error 消失了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6579542/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com