我正在尝试通过vs代码从VM ubuntu 16.04 amd64主机远程调试c ++应用程序到cubietruck板(ARM®Cortex™-A7双核)的debian armbian目标。
我仅在字段
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
因此整个launch.json已变为
{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Launch",
"type": "cppdbg",
"request": "launch",
"miDebuggerPath": "/home/user/ARM/gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"program": "/home/user/myproject/bin/app",
"miDebuggerServerAddress": "localhost:9091",
"args": [],
"stopAtEntry": false,
"cwd": "/home/user/myproject",
"environment": [],
"externalConsole": true,
"linux": {
"MIMode": "gdb"
},
"osx": {
"MIMode": "gdb"
},
"windows": {
"MIMode": "gdb"
}
}
]
}
在launch.json文件中,以便支持漂亮的打印机。
在主机中,我使用的是linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf gdb,而ARM板上的gdb具有本机8.0.1 gdb。
除了漂亮的打印机以外,其他所有东西都工作正常,因为字符串无法正确显示。每当我将鼠标悬停在字符串上时,就会弹出npos和_M_dataplus字段,应该打开_M_dataplus字段以查看实际的字符串。
在主机中,linaro gdb支持pretty-printer,因为命令info pretty-printer
给出了输出:
builtin
mpx_bound128
但是,当我在目标gdb 8.0.1中给出相同的命令时,我得到:
Undefined info command: "pretty-printer". Try "help info".
我还在主机主文件夹中创建了一个.gdbinit文件,其中包含enable pretty-printer
命令。我在调试控制台中看到它已成功执行,但结果也是错误的。
由于我是远程调试的新手,因此应该怎么做才能使漂亮打印机工作。我应该在远程板上也安装漂亮打印机还是我做错了其他事情?
答案 0 :(得分:0)
1。确保您的垃圾箱不是用-static-libstdc++
2。如果必须使用-static-libstdc++
,请在〜/ .gdbinit中添加以下内容:
python sys.path.append('/usr/share/gdb/python') <--provided by gdb `show configuration: --with-gdb-datadir=`
python sys.path.append("/usr/share/gcc-8/python/") <--corresponding to your gcc version
source /usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25-gdb.py <--this script is for std::string/list/map/etc pretty-printing.
3。编辑您的launch.json:
"setupCommands": [
{ "text": "-interpreter-exec console \"set sysroot /\"", "ignoreFailures": true },
{ "text": "-enable-pretty-printing", "ignoreFailures": true },
],
这是我为解决发生在我身上的相同问题所做的工作。希望这能解决您的问题。
ref1:http://tomszilagyi.github.io/2018/03/Remote-gdb-with-stl-pp
ref2:http://transit.iut2.upmf-grenoble.fr/doc/gdb-doc/html/gdb/Writing-a-Pretty_002dPrinter.html