问题在于调试代码调用了某个 dll 函数,这个函数和其他函数来自同一个 dll:
EdsGetCameraList(&l);
当我打破这一行然后发出next
命令时,我得到一个
(gdb) n
0x1000e620 in ?? ()
0x1000e620
是 EdsGetCameraList 的地址:
(gdb) disas find_cam,+20
Dump of assembler code from 0x401783 to 0x401797:
0x00401783 <find_cam+0>: push ebp
0x00401784 <find_cam+1>: mov ebp,esp
0x00401786 <find_cam+3>: sub esp,0x48
=> 0x00401789 <find_cam+6>: lea eax,[ebp-0x14]
0x0040178c <find_cam+9>: mov DWORD PTR [esp],eax
0x0040178f <find_cam+12>: mov eax,ds:0x4092dc
0x00401794 <find_cam+17>: call eax
0x00401796 <find_cam+19>: sub esp,0x4
End of assembler dump.
(gdb) x 0x4092dc
0x4092dc <_imp__EdsGetCameraList@4>: 0x1000e620
难怪我next
再次输入我会得到:
(gdb) n
Cannot find bounds of current function
到底是怎么回事?