在linux上调试巨大的C++项目

Debug huge C++ project on linux

本文关键字:C++ 项目 巨大 调试 linux      更新时间:2023-10-16

我使用C++在Mac上开发了一个项目。它工作得很好。然而,当我试图从Linux服务器启动它时,我得到了一个严重的分配错误:

terminate called after throwing an instance of 'std::bad_alloc' 
what():    std::bad_alloc 
Aborted

我不知道如何调试整个项目,因为我完全不知道问题来自哪里。为什么它在我的Mac上工作而在Linux上不工作?所有关于这方面的文章和问题只要求单个文件程序,而不是40多个文件项目。

有没有办法获取导致错误分配的文件或行?

使用-g编译器选项构建程序,以获得有意义的堆栈跟踪。

然后在调试器中运行程序,例如gdb:

gdb --args [executable] [arguments...]

加载gdb后,输入命令run,程序将运行。一旦抛出异常并且程序没有捕获到异常,gdb就会向您显示一个堆栈跟踪,显示异常的抛出位置。

std::bad_alloc意味着您的程序无法分配更多内存,可能是因为操作系统内存不足,或者您达到了系统规定的明确内存限制。