关于GDB如何进行两个窗口联动调试

     

最近在回顾国资师傅的文章是,对视频中的gdb两个窗口的联动方法产生了很大的兴趣。可惜师傅提供的方法建立在下载了三种插件并且修改了gdbinit文件的基础上,在刚入门的小白看来可能显得有些繁琐,而且我的kali进行了汉化,部分方法也行不通了,所以我总结了网上的一些资源,得出了一个只需要下载了pwndbg就可以实现联动调试的方法。

首先找出pwndbg找到gdbinit这个文件将他的2文件路径复制下来。

img

先向终端中输入这个指令

 echo "source 你所复制的文件路径" > ~/.gdbinit

接着编译你刚刚创立出来的gdbinit文件

vim ~/.gdbinit   

在里面加入你想要打开的窗口就可以了

set context-output /dev/pts/1        //将shell用户中执行命令产生的输出放置到/dev/pts/1
set context-output /dev/pts/2     //将输出定向到 /dev/pts/2 

上述指令中的/dev/pts/1或2你可以在自己的终端中输入tty自行选择判断,一般第一个打开的默认为0

修改完成后,保存退出,就可以实现gdb两个窗口的联动调试了

还是比较方面简洁的。

        

<think>好的,用户想了解如何配置GDB进行联动调试。首先,我需要回忆一下GDB联动调试的基本概念,也就是使用gdbserver在目标机器上运行程序,然后通过主机上的GDB进行远程调试。这个过程需要确保主机和目标机之间的网络连接正常,并且有正确版本的gdbserver和交叉编译的GDB工具链。 根据提供的引用内容,引用[1]提到如果交叉编译工具链已经包含arm-linux-gdbgdbserver,可以直接使用,否则需要从官网下载源码编译。引用[2]给出了启动GDB的不同方式,比如使用gdb app来调试指定程序。引用[4]提到可以下载预编译的gdbserver,并重命名使用。 接下来,我需要整理配置步骤。首先是交叉编译工具链的准备,确保主机上有交叉编译的GDB(如arm-linux-gdb),目标机上有对应的gdbserver。然后是在目标机上运行gdbserver,指定程序和端口。主机上使用交叉编译的GDB连接目标机的IP和端口,加载符号表,最后开始调试。 需要注意的要点包括:gdbserver和主机GDB版本要兼容;目标机可能需要静态编译的gdbserver;防火墙设置是否允许端口通信;调试时需要加载带调试信息的程序。可能的问题比如连接失败,需要检查网络和端口,或者版本不匹配需要重新编译工具链。 最后,生成相关问题时要围绕配置步骤、常见问题、优化方法、应用场景等方面提问,帮助用户深入理解。</think>### GDB联动调试配置教程 GDB联动调试通常指**本地GDB与远程gdbserver协作调试嵌入式程序**,配置步骤如下: --- #### 一、环境准备 1. **工具链要求** - 主机端:安装交叉编译工具链中的`arm-linux-gdb`(或其他架构对应版本)[^1] - 目标机:部署`gdbserver`(可通过源码编译或下载预编译版本[^4]) 2. **程序编译** 编译目标程序时需添加`-g`参数生成调试信息: ```bash arm-linux-gcc -g app.c -o app ``` --- #### 二、配置步骤 1. **启动gdbserver(目标机)** 在目标设备执行: ```bash gdbserver :1234 ./app # 监听1234端口并启动待调试程序 ``` ▸ 若提示`gdbserver`缺失,需通过静态编译或预构建版本解决 2. **连接远程调试(主机)** 在主机端执行: ```bash arm-linux-gdb ./app # 加载带调试符号的程序 (gdb) target remote 192.168.1.100:1234 # 替换为目标机IP和端口 (gdb) break main # 设置断点 (gdb) continue # 开始调试 ``` --- #### 三、关键配置项 | 配置项 | 说明 | |-----------------|----------------------------------------------------------------------| | `set sysroot` | 指定目标机库文件路径,避免符号缺失 | | `set solib-search-path` | 设置动态库搜索路径 | | `file` | 加载带调试信息的可执行文件[^2] | --- #### 四、调试操作示例 ```bash (gdb) list # 查看源码 (gdb) print variable # 打印变量值 (gdb) next # 单步执行 (gdb) monitor exit # 强制结束远程调试会话 ``` --- #### 五、常见问题 1. **连接失败** - 检查防火墙是否开放端口 - 确认目标机IP和端口正确 2. **版本不匹配** - 确保主机GDB与目标机gdbserver版本一致 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值