1、gdb编译g
一直客户机用8.2,主机用7.8也能用,但是感觉有点问题,为了统一本版本,又再c++11情况下。
2、编译方法
vim ./gdb/common/gdb_assert.h +26
将 #define gdb_static_assert(expr) \
extern int never_defined_just_used_for_checking[(expr) ? 1 : -1]
修改为:
#define gdb_static_assert(expr) \
extern int never_defined_just_used_for_checking[(1) ? 1 : -1]
---------------------
7.8.0 This GDB was configured as "--host=x86_64-unknown-linux-gnu --target=arm-cortex_a9-linux-gnueabi".
7.10 --host=x86_64-pokysdk-linux --target=arm-poky-linux-gnueabi
$./configure --target=arm-linux --program-prefix=arm-linux- --prefix=/usr/local/arm-gdb
--target=arm-linux意思是说目标平台是运行于ARM体系结构的linux内核;--program-prefix=arm-linux-是指生成的可执行文件的前缀,比如arm-linux-gdb,--prefix是指生成的可执行文件安装在哪个目录,这个目录需要根据实际情况作选择。如果该目录不存在,会自动创建,当然,权限足够的话。
--build=编译该软件所使用的平台
--host=该软件将运行的平台
--target=该软件所处理的目标平台
ubuntu(poky 自己给了个环境为:./configure --host=arm-poky-linux --target=arm-poky-linux-gnueabi --program-prefix=arm-poke- --prefix=/home/huiwei/nfs_dir/out_bin/gdb1)
./configure --target=arm-linux-gnueabihf --program-prefix=arm- --prefix=/home/huiwei/nfs_dir/out_bin/gdb80
./configure --host=i386-linux --target=arm-poky-linux-gnueabi --program-prefix=arm-poke- --prefix=/home/huiwei/nfs_dir/out_bin/gdb1
./configure --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf --program-prefix=arm- --prefix=/home/huiwei/nfs_dir/out_bin/gdb80/gdbserver
3、GDB使用
见《https://www.cnblogs.com/jlmgary/p/6170435.html》
4、VSCODE GDB配置
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/lib/autodrive",
"miDebuggerPath": "/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gdb",
"miDebuggerServerAddress": "192.168.1.71:1234",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"text": "set sysroot" //不加载远程so文件,不调试动态链接库,跳过read xxx.so from remote target,能减少每次调试准备时间
}
],
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
//"preLaunchTask": "make", // 代码有修改,先执行make编译任务
"MIMode": "gdb",
"logging": {
"moduleLoad": false,
"trace": true,
"engineLogging": true,
"exceptions": true
// "traceResponse": true
}
}
]
}