我在vscode的launch.json关于gdb参数的配置中有写到,只给gdb初始化时配置-enable-pretty-printing可能没有作用。原因在于pretty-printing所需要使用的python脚本没有被默认的import进来,并被调用。
我们来看看需要如何使pretty-printing起作用。
首先,通过linux命令行查找/usr/share/gcc-x.x.x/python这么个目录。
(
如果没有此目录的话,需要去网上下载这个东西,可以参考下面的文章(我没看懂下载到哪,因为我没有实际操作过)
GDB调试,如何查看STL容器值?_小小蚂蚁fcy的博客-CSDN博客_gdb查看stl
)
找到此目录后,copy下这个目录路径备用。
在~/.gdbinit中(如果没有则自己建一个)加入下面内容,其中的路径就是刚刚copy的路径。
python
import sys
sys.path.insert(0, '/usr/share/gcc-x.x.x/python')
from libstdcxx.v6.printers import register_libstdcxx_printers
register_libstdcxx_printers (None)
end
这样gdb启动时就会默认加载这几行语句了。
我们也可以在~/.gdbinit中加入其他的一些gdb的初始化参数,以符合我们的调试习惯。
这些参数也都可以写到vscode的launch.json中,比如下面这样
"setupCommands": [
{
"description": "Test",
"text": "python import sys;sys.path.insert(0, '/usr/share/gcc-x.x.x/python');from libstdcxx.v6.printers import register_libstdcxx_printers;register_libstdcxx_printers(None)",
"ignoreFailures": false
},
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
gdb的其他参数可以参考下面的文章
用GDB调试程序(六) - CarryBricks - 博客园
所有的参数可以通过进入gdb后输入help set print 来查看,当然还有非print相关的许多其他设置,可以自己摸索。
写到launch.json中参考如下格式(没试过,有问题自己摸索)
"setupCommands": [
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
最后附上抄的别人的配置,用上去还行
set print pretty on
set print object on
set print static-members on
set print demangle on
set print sevenbit-strings off
python
import sys
sys.path.insert(0, '/usr/share/gcc-x.x.x/python')
from libstdcxx.v6.printers import register_libstdcxx_printers
register_libstdcxx_printers (None)
end