我需要调试一个segfault。我正在使用Conan(conan build ..
(进行编译。我将此添加到CMakeLists.txt
set(CMAKE_BUILD_TYPE "Debug")
但是,当我运行二进制文件并得到segfault时,我只得到
Segmentation fault
ERROR: conanfile.py: Error in build() method, line 15
self.run("bin/main")
ConanException: Error 139 while executing bin/main
我也在conanfile.py的构建步骤中尝试过这一点
cmake.definitions["CMAKE_BUILD_TYPE"] = "Debug"
我应该怎么做才能获得关于我为什么会出现segfault的信息?
您不能将conan配置为"获取调试信息";。
对于临时调试,我建议在调试器中手动运行程序。
但是,您可以将操作系统配置为在segfault时生成程序的核心转储。这样,您就可以让conan在没有调试器的情况下执行程序,然后使用调试器检查内存转储。
也就是说,通过内存转储尽可能地查看程序的状态,并不一定能说明一切,而且一步一步的调试可能会显示太多信息,很难找到错误。一个好的工具是用未定义的行为和地址清理程序来构建程序,并希望它们能捕捉到错误。