0

我尝试在 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 中的程序集窗口获取正确的输出吗?

4

1 回答 1

0

这是 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 后工作。

于 2020-05-22T14:34:51.853 回答