如何在没有转储的情况下使用 WinDbg 查看某个偏移量处的代码?
How to see the code at a certain offset using WinDbg, without dump?
我在某些客户端上有一个可执行文件 运行。他报告在 mymodule.dll!0xaddr
发生车祸。
假设我有可执行文件、一个符号服务器、一个正确设置的 WinDbg,有没有办法在不加载转储或附加到 运行 进程的情况下查看位置 0xaddr
处的代码?
这有点取决于 "code" 适合您...
- 启动 WinDbg
- 选择"Open crash dump ...",而不是"Open executable ..."
- Select您选择的 EXE 或 DLL 文件,而不是 DMP 文件
- 键入
ln mymodule.dll!0xaddr
以查看该地址附近的符号
- 键入
u mymodule.dll!0xaddr
以查看汇编代码
如果 EXE 或 DLL 具有 PDB 信息并且 WinDbg 能够找到 PDB,并且如果 PDB 引用源(例如私有符号),您将获得有用的信息:
0:000> ln 00412510
[...\addressdemo\addressdemo.cpp @ 8] (00412510) AddressDemo!main | (00412575) AddressDemo!std::uncaught_exception
Exact matches:
0:000> u 00412510
AddressDemo!main [...\projects\addressdemo\addressdemo.cpp @ 8]:
00412510 55 push ebp
00412511 8bec mov ebp,esp
00412513 81ecc0000000 sub esp,0C0h
00412519 53 push ebx
0041251a 56 push esi
0041251b 57 push edi
我在某些客户端上有一个可执行文件 运行。他报告在 mymodule.dll!0xaddr
发生车祸。
假设我有可执行文件、一个符号服务器、一个正确设置的 WinDbg,有没有办法在不加载转储或附加到 运行 进程的情况下查看位置 0xaddr
处的代码?
这有点取决于 "code" 适合您...
- 启动 WinDbg
- 选择"Open crash dump ...",而不是"Open executable ..."
- Select您选择的 EXE 或 DLL 文件,而不是 DMP 文件
- 键入
ln mymodule.dll!0xaddr
以查看该地址附近的符号 - 键入
u mymodule.dll!0xaddr
以查看汇编代码
如果 EXE 或 DLL 具有 PDB 信息并且 WinDbg 能够找到 PDB,并且如果 PDB 引用源(例如私有符号),您将获得有用的信息:
0:000> ln 00412510
[...\addressdemo\addressdemo.cpp @ 8] (00412510) AddressDemo!main | (00412575) AddressDemo!std::uncaught_exception
Exact matches:
0:000> u 00412510
AddressDemo!main [...\projects\addressdemo\addressdemo.cpp @ 8]:
00412510 55 push ebp
00412511 8bec mov ebp,esp
00412513 81ecc0000000 sub esp,0C0h
00412519 53 push ebx
0041251a 56 push esi
0041251b 57 push edi