我沒有完整的源代碼,只是帶有符號的對象文件。讀線有:在GDB中打印裝配體變量
=> 0x080489cd <+169>: call 0x8049275 <read_line>
0x080489d2 <+174>: mov %eax,(%esp)
0x080489d5 <+177>: call 0x8048d59 <phase_1>
in the function:
8048d59: 55 push %ebp
8048d5a: 89 e5 mov %esp,%ebp
8048d5c: 83 ec 08 sub $0x8,%esp
我在第一行放了一個b,並在函數名稱中加了一個以確保。進入「1」後試過p *(char**)$esp
,我得到:
0x80489da "\350\355\006"
這不是我所期待的。我期望看到「1」。我也試過:
gdb x $esp
0xbffff0cc: 0x080489da
gdb x *0xbffff0cc
0x80489da <main+182>: 0x0006ede8
你說你有符號的目標文件。你知道它是否用'gcc -g'編譯,即帶有調試信息。如果出現這種情況,您可以很快恢復100%的源代碼。 – QuasarDonkey