gpt4 book ai didi

c++ - 解决随机崩溃

转载 作者:IT老高 更新时间:2023-10-28 12:33:58 33 4
gpt4 key购买 nike

我的 C++ 应用程序随机崩溃,它可能一个月不会崩溃,然后在一小时内崩溃 10 次,有时它可能会在启动时崩溃,而有时它可能会在运行几个小时后崩溃(或根本不会崩溃)。

我在 GNU/Linux 上使用 GCC,在 Windows 上使用 MingW,因此我无法使用 Visual Studio JIT Debug...

我不知道如何继续,随机查看代码是行不通的,代码很大(而且好的部分不是我的工作,而且上面有很多遗留的东西),我也不知道如何重现崩溃。

编辑:很多人提到...我如何制作核心转储、小型转储或任何转储?这是我第一次需要事后调试。

EDIT2:实际上,DrMingw 捕获了一个调用堆栈,没有内存信息......不幸的是,调用堆栈对我没有多大帮助,因为在接近尾声时突然它进入了一些我没有的库(或其他东西)有调试信息,只产生一些十六进制数字......所以我仍然需要一些体面的转储来提供更多信息(特别是关于内存中的内容......具体来说,出现“访问冲突”错误的地方是什么)

另外,我的应用程序使用 Lua 和 Luabind,可能错误是由 .lua 脚本引起的,但我不知道如何调试。

最佳答案

试试 Valgrind (它是免费的、开源的):

The Valgrind distribution currently includes six production-quality tools: a memory error detector, two thread error detectors, a cache and branch-prediction profiler, a call-graph generating cache profiler, and a heap profiler. It also includes two experimental tools: a heap/stack/global array overrun detector, and a SimPoint basic block vector generator. It runs on the following platforms: X86/Linux, AMD64/Linux, PPC32/Linux, PPC64/Linux, and X86/Darwin (Mac OS X).

Valgrind Frequently Asked Questions

Memcheck包的一部分可能是开始的地方:

Memcheck is a memory error detector. It can detect the following problems that are common in C and C++ programs.

  • Accessing memory you shouldn't, e.g. overrunning and underrunning heap blocks, overrunning the top of the stack, and accessing memory after it has been freed.

  • Using undefined values, i.e. values that have not been initialised, or that have been derived from other undefined values.

  • Incorrect freeing of heap memory, such as double-freeing heap blocks, or mismatched use of malloc/new/new[] versus free/delete/delete[]

  • Overlapping src and dst pointers in memcpy and related functions.

  • Memory leaks.

关于c++ - 解决随机崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3437809/

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