加载后从exec到远程的GDB反汇编不同-加载不正确?

加载后从exec到远程的GDB反汇编不同-加载不正确?,gdb,remote-debugging,disassembly,segger-jlink,Gdb,Remote Debugging,Disassembly,Segger Jlink,我有一个用arm none eabi gcc编译的.out文件-mtune=cortex-m3-specs=nosys.specs 如果我使用arm none eabi GDB a.out运行GDB,并在exec上执行disas main,我会得到一个外观合理的反汇编,这与C对于如此简单的测试非常相似 如果我将远程localhost:XXXX作为目标,通过JLink连接到设备并加载,disas main就不同了,不仅仅是地址;甚至更长 不过,加载成功,因为这样做没有错误,所以它会报告合理数量的“

我有一个用arm none eabi gcc编译的.out文件-mtune=cortex-m3-specs=nosys.specs

如果我使用arm none eabi GDB a.out运行GDB,并在exec上执行disas main,我会得到一个外观合理的反汇编,这与C对于如此简单的测试非常相似

如果我将远程localhost:XXXX作为目标,通过JLink连接到设备并加载,disas main就不同了,不仅仅是地址;甚至更长

不过,加载成功,因为这样做没有错误,所以它会报告合理数量的“加载大小”

如果我改变源代码,加载后的反汇编确实会改变,但似乎从来都不像源代码,而且与直接反汇编可执行文件完全不同,后者与源代码非常相似

我最好的猜测是加载没有正确成功,这是什么原因造成的

或者,如果从上面看,它没有正确加载,为什么拆解如此不同

更新: 我验证了加载后在disas main上看到的实际上是它加载的内容,即,通过反复手动清除设置为{long long}0xADDR=0的地址,它不会与内存中的“剩余”内容合并

因此,出于某种原因,load看起来确实加载了一些与源elf中不完全相同的东西


此外,其中一个分支在我看来并不正确,它将流定向到指令ldr???.w r7[r4,4095]。这到底是怎么回事??平均值-是否格式不正确且ldr的类型无效,因此GDB打印???,从而证明加载未正确执行?

加载后立即使用compare命令检查二进制文件是否已成功加载。@dbrank0远程目标不支持此操作。