gdb list指向的源文件错误

在ubuntu下调试libco 调试example_thread时 遇到这样的问题
gdb list显示的不是对应的源文件example_thread.cpp 而是指向了另一个libco的源文件coctx_swap.S
排查后发现是GCC的代码优化等级影响了调试符号的生成

set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} -g -fno-strict-aliasing -O2 -Wall -export-dynamic -Wall -pipe  -D_GNU_SOURCE -D_REENTRANT -fPIC -Wno-deprecated -m64)

将代码优化关闭后解决

set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} -g -fno-strict-aliasing -O0 -Wall -export-dynamic -Wall -pipe  -D_GNU_SOURCE -D_REENTRANT -fPIC -Wno-deprecated -m64)

得出结论 : gdb调试debug代码时,应该关闭GCC的编译器代码优化.

你可能感兴趣的:(gdb list指向的源文件错误)