关于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> 嗯,用户现在需要的是在鸿蒙系统中使用debug包进行断点调试的具体方法。之前系统指令要求生成相关问题,但用户当前的提问非常具体明确,可能更关注实际操作步骤。 回顾对话历史,用户曾要求获取debug包调试方法,而我在上一次回答中提供了DevEco Studio的操作流程、断点类型和网络调试等详细方案。这次用户再次询问相同问题,说明可能需要更精炼的步骤或遇到了实施障碍。 用户身份可能是鸿蒙应用开发者,从"断点调试"这个专业术语的使用来看具备一定开发基础。真实需求应该是在真实设备或模拟器上捕获运行时错误。考虑到鸿蒙开发环境的特殊性,需要重点强调两点:一是鸿蒙特有的ArkCompiler调试机制,二是分布式调试的注意事项。 在技术细节上应该补充:鸿蒙的调试符号文件格式是.ark,与Android的.dwarf不同;调试协议基于扩展的JDWP;多设备调试时需要明确指定目标设备ID。这些在官方文档中容易忽略但实际调试时很关键。 用户没有提及具体开发语言,但根据鸿蒙现状,默认按JS/TS方案处理。如果用户使用C++开发native模块,则需要补充ndk-gdb的配置方法,不过当前回答暂不展开。 上次提供的代码片段展示了日志输出,这次可以增加断点条件设置的示例。另外观察到用户特别关注"debug包",要强调签名配置和开启调试权限的区别:debug包自动获得调试权限,但release包即使重新签名也无法调试。 最后生成的问题应围绕调试技巧延伸,比如性能分析工具或跨设备断点跟踪,避免重复基础操作。考虑到鸿蒙的分布式特性,第三个问题特意设计为"分布式断点联动"的解决方案。 </think> 在鸿蒙系统中使用debug包进行断点调试需通过**DevEco Studio**(官方IDE)完成,以下是详细操作流程: --- ### 🔧 一、配置Debug包 1. **修改编译配置** 在模块级`build.gradle`文件中确认开启调试模式: ```groovy ohos { signingConfigs { debug { storeFile file('debug.keystore') // 使用调试证书 storePassword '默认密码' keyAlias 'debugKey' keyPassword '默认密码' } } buildTypes { debug { signingConfig signingConfigs.debug debuggable true // 关键!启用调试 } } } ``` 2. **安装Debug包至设备** 连接真机/模拟器 → 点击DevEco Studio顶部菜单 **Build > Build Hap(s)/APP(s) > Build Debug Hap(s)** → 生成带调试符号的HAP包自动安装到设备。 --- ### ⚡ 二、断点调试步骤 1. **设置断点** 在代码编辑器中点击行号左侧区域(出现🔴红点即成功),支持: - 行断点 - 条件断点(右键红点→输入条件如`count > 5`) - 方法断点(在方法声明行设置) 2. **启动调试会话** 点击顶部工具栏 **Run > Debug '模块名'** 或按`Shift+F9`,控制台输出: ```bash Connecting to device... Debugger attached on port 5001 ``` 3. **调试工具栏操作** ![调试工具栏图示](assets/debug_toolbar.png) - ⏯️ **Resume**(F9):继续执行至下一断点 - ⏭️ **Step Over**(F8):单步跳过 - **Step Into**(F7):单步进入方法 - ⏫ **Step Out**(Shift+F8):跳出当前方法 - 🧲 **View Breakpoints**(Ctrl+Shift+F8):管理所有断点 4. **查看运行时数据** - **Variables 窗口**:实时显示当前作用域变量值 - **Watches 窗口**:自定义监控特定变量(点击`+`添加) - **Console**:查看`console.log()`输出及系统日志 --- ### 🌐 三、网络请求调试(扩展场景) 1. 在`@ohos.net.http`请求代码处设断点 2. 查看`HttpRequest`对象中的`url`、`header`参数 3. 通过**Evaluate Expression**(Alt+F8)动态修改请求参数: ```javascript // 在断点处执行表达式 request.header.ContentType = "application/json;charset=utf-8" ``` --- ### ⚠️ 四、常见问题排查 | 现象 | 解决方案 | |---------------------|----------------------------------| | 断点未命中 | 1. 确认编译的是debug包<br>2. 检查`build.gradle`中`debuggable=true` | | 调试器连接超时 | 1. 检查设备USB调试模式已开启<br>2. 重启`hdc`服务:`hdc shell killall hdc` | | 变量显示`<optimized out>` | 关闭编译器优化:在`build.gradle`添加`externalNativeOptions { optimize "-O0" }` | > 💡 高级技巧:使用 **Attach Debugger** 调试已启动应用 > 运行应用 → 点击 **Run > Attach to Process** → 选择设备对应的进程ID --- ### 📚 官方调试文档参考 - [调试能力概述](https://developer.harmonyos.com/cn/docs/documentation/doc-guides/debug_overview-0000001053822404) - [网络调试实战](https://developer.harmonyos.com/cn/docs/documentation/doc-references/js-apis-http-0000001168365718) - [多设备协同调试](https://developer.harmonyos.com/cn/docs/documentation/doc-guides/distributed-debug-0000001124242192) [^1] ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值