gdb调试C++程序:Cannot evaluate function -- may be inlined

文章目录

  • 一、增加编译选项
  • 二、使用gdbinit插件
  • 三、gdb原生
  • 四、通过编译选项解决
  • 参考

一、增加编译选项

二、使用gdbinit插件

如果你的程序依赖于libcxx,而不是libstdc++.so.6

配置~/.gdbinit

$ cat ~/.gdbinit
set print pretty on
set print object on

# libc++ pretty printers
# See: https://github.com/koutheir/libcxx-pretty-printers
python
import sys
sys.path.insert(0, '/home/koutheir/libcxx-pretty-printers/src')
from libcxx.v1.printers import register_libcxx_printers
register_libcxx_printers(None)
end

三、gdb原生

并不是很好用

info pretty-printer
enable pretty
disable pretty

四、通过编译选项解决

对应的可以调整cmake编译选项或者选择Debug类型进行编译;
最简单的方法可能是使用-fno-inline-functions或(甚至更好)-O0禁用函数内联进行编译。

-fno-inline-functions or (still better) -o0

参考

  • C++ – How to pretty-print STL containers in GDB
  • https://github.com/koutheir/libcxx-pretty-printers
  • C++ – How to pretty-print STL containers in GDB
  • [SOLVED]-CANNOT EVALUATE FUNCTION – MAY BE INLINED-C++

你可能感兴趣的:(Linux实际开发总结,c++)