dic*_*ciu 6 macos gdb gnu-assembler ld
我有一个使用as编译的目标文件(来自汇编程序代码).
如果我使用ld链接它,当我尝试stepi(或nexti)gdb抱怨地址0x0的内存访问.如果我使用gcc链接它,一切都很好.
我猜这个问题是由ld引起的,与gcc的链接结果相比,它产生的部分更少.
有没有办法配置gdb更冗长,所以我可以弄清楚可执行文件有什么问题?
(gdb) b main
Breakpoint 1 at 0x100000f8e
(gdb) r
Breakpoint 1, 0x0000000100000f8e in main ()
(gdb) x/10i $pc
0x100000f8e <main>: fbld 0x6c(%rip) # 0x100001000 <data1>
0x100000f94 <main+6>: fimul 0x7a(%rip) # 0x100001014 <data2>
0x100000f9a <main+12>: fbstp 0x60(%rip) # 0x100001000 <data1>
0x100000fa0 <main+18>: mov0x0 $0x2000001,%rax
0x100000fa7 <main+25>: mov $,%rdi
0x100000fae <main+32>: syscall
(gdb) si
Cannot access memory at address 0x0
0x0000000100000f94 in main ()
Run Code Online (Sandbox Code Playgroud)
PS:可执行文件本身在两个版本中都按预期运行.
稍后编辑:我用来编译的命令:
as -arch x86_64 src.s -o src.o
ld -e _main -arch x86_64 src.o -o src
gcc -o src src.o
Run Code Online (Sandbox Code Playgroud)
gdb 有一个“show debug”命令,提供各种内部调试设置。例如,“set debug target 1”将打开 gdb 与目标进程交互的跟踪。您可能想尝试他们拥有的每个标志(没有那么多)。
| 归档时间: |
|
| 查看次数: |
814 次 |
| 最近记录: |