gpt4 book ai didi

c++ - 通过 vs code 远程调试 arm 板时 Pretty-printer 不工作

转载 作者:行者123 更新时间:2023-12-02 10:39:24 24 4
gpt4 key购买 nike

我正在尝试通过 vs 代码从 VM ubuntu 16.04 amd64 主机远程调试 c++ 应用程序到 cubietruck 板(ARM® Cortex™-A7 双核)的 debian armbian 目标。
我已按照本指南 https://medium.com/@spe_/debugging-c-c-programs-remotely-using-visual-studio-code-and-gdbserver-559d3434fb78唯一增加的领域

"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 文件中以支持 pretty-print 。
在主机中,我使用的是 linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf gdb,而 arm 板上的 gdb 具有 native 8.0.1 gdb。
一切正常,除了 pretty-print ,因为字符串显示不正确。每当我将鼠标悬停在字符串上时,字段 npos 和 _M_dataplus 就会弹出,并且应该打开 _M_dataplus 字段以查看实际字符串。
在主机中,linaro gdb 支持 pretty-print ,因为命令 info pretty-printer给出输出:
builtin  
mpx_bound128

但是,当我在目标 gdb 8.0.1 中给出相同的命令时,我得到:
Undefined info command: "pretty-printer".  Try "help info".

我还在我的主机主文件夹中创建了一个 .gdbinit 文件,其中包含 enable pretty-printer命令。我在调试控制台中看到它执行成功,但结果也是错误的。
由于我在远程调试方面非常新手,我应该怎么做才能让 pretty-print 工作。我应该在远程板上安装 pretty-print 还是我做错了什么?

最佳答案

1.确保您的垃圾箱是不是 -static-libstdc++ build

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 },
],

这就是我为解决发生在我身上的同样问题所做的。希望这能解决您的问题。

引用1: http://tomszilagyi.github.io/2018/03/Remote-gdb-with-stl-pp

引用 2: http://transit.iut2.upmf-grenoble.fr/doc/gdb-doc/html/gdb/Writing-a-Pretty_002dPrinter.html

引用 3: Import Error: No module name libstdcxx

关于c++ - 通过 vs code 远程调试 arm 板时 Pretty-printer 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51085902/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com