gdb - 使用 avr-gdb 和 ddd 在 avr 上进行 jtag 调试
问题描述
我尝试在 AVR 8 位微控制器上使用 jtag 进行调试。
贪婪--jtag /dev/ttyUSB0 :4444
ddd lcd --debugger avr-gdb
在会议中我这样做:
目标远程本地主机:4444
打破主要
Breakpoint 1 at 0x244: file lcd_test.cpp, line 254.
续
现在目标停止并且 pc 是正确的:
但是如果我查看汇编代码窗口,我的偏移量为 0x800000 并且内容错误:
Dump of assembler code from 0x800244 to 0x800344:
0x00800244: ldd r1, Y+16 ; 0x10
0x00800246: std Z+8, r0 ; 0x08
0x00800248: sbc r8, r16
0x0080024a: xch Z, r16
0x0080024c: .word 0x0018 ; ????
0x0080024e: eor r1, r0
在本机 avr-gdb 中,layoit asm
一切看起来都很好。
知道如何从与 avr-gdb 相关的 DDD 中的程序集窗口获取正确的输出吗?
解决方案
这是 gdb 中一个非常古老的错误!它已在 2011 年被报告。错误报告包含一个可应用于当前 gdb 版本 9.1 并按预期工作的补丁!
ddd 也必须修补:
diff -ur ddd-3.3.12/ddd/GDBAgent.C ddd-3.3.12_patched/ddd/GDBAgent.C
--- ddd-3.3.12/ddd/GDBAgent.C 2009-02-11 18:25:06.000000000 +0100
+++ ddd-3.3.12_patched/ddd/GDBAgent.C 2014-05-20 09:49:46.147850710 +0200
@@ -3200,7 +3200,8 @@
{
string end_( end );
normalize_address(end_);
- cmd += ' ';
+ cmd += ',';
+ cmd += ' ';
cmd += end_;
}
return cmd;
使用 avr-gdb 更改 ddd 后工作。
推荐阅读
- scikit-learn - 我不明白在训练测试拆分和 MLP 回归器中更改随机状态之间的区别
- docker - 使用入口点执行脚本后将数据从容器复制到主机
- java - 使用 mTLS 和 WSS 时提取客户端证书信息
- javascript - 公开全局 API 方法来控制 vue 组件
- php - PHP 致命错误:未捕获的错误:调用未定义的方法 PDOStatement::rowCount()
- r - 做回归分析时如何评估随机森林的模型和预测?
- go - 有没有办法将 golang net/http 应用程序公开到我的本地网络?
- c# - 如何从 C# selenium 的下拉列表中找到值?
- android - CharlesProxy -Cisco Anyconnect - Android
- jquery - 如何使用引导箱模式对话框显示处理微调器/gif