如何让Conan/CMake给我调试信息来找到segfault



我需要调试一个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在没有调试器的情况下执行程序,然后使用调试器检查内存转储。

也就是说,通过内存转储尽可能地查看程序的状态,并不一定能说明一切,而且一步一步的调试可能会显示太多信息,很难找到错误。一个好的工具是用未定义的行为和地址清理程序来构建程序,并希望它们能捕捉到错误。

相关内容

  • 没有找到相关文章

最新更新