libc 中的错误?如何读取转储文件

Bug in libc? How to read dump file?

本文关键字:读取 转储 文件 何读取 错误 libc      更新时间:2023-10-16

我会尽量用最好的方式提出我的问题:

我想使用相机制造商的示例代码(只有一个名为"main.cpp"的文件)在 Ubuntu 11.10 下从我的相机读取图像。如果我使用示例项目,一切正常,并且我会收到图像数据。但是,如果我将此"main.cpp"添加到我的真实项目中并进行编译,则应用程序会崩溃。

很难

确定导致此错误的部分。但是,如果我从我身上删除一些代码(已编译但肯定没有使用!),程序将按预期工作。我想在我的代码编译时,我链接的另一个库会导致错误(例如 Opencv 或 boost?我试图找出导致这种行为的部分,但如果你们能同时告诉我,如果有可能从这个崩溃消息中提取有用的信息,我会很高兴这个 Gist 上可以找到。

我的 libc 损坏了吗?

libc 中的错误?

不。

*** glibc detected *** ./myProject: double free or corruption (!prev): 0x09c12660 ***

此错误意味着应用程序以某种方式损坏了堆。它可能free同一指针两次,或者可能已写入已分配缓冲区的末尾。

查找此类堆损坏错误的工具是Valgrind。

只有当你链接额外的代码时才会发生崩溃,这可能只是一个意外——即使没有额外的代码,这个错误也可能存在于应用程序中,但还没有表现在崩溃中。

额外的代码也有可能引入错误,尽管可能性较小。

在任何一种情况下,一旦您在 Valgrind 下运行应用程序,错误应该变得很明显。