2

Background

My Java program crashed and I got a Java crash report. However, the crash was within JNI native code, so the crash log is not very useful, I'd better have a crash dump. The only useful information is the offset in my native DLL.

Extract of the Java crash report:

C  [test.dll+0x1032]

Since the crash is not easily reproducible, I cannot create a .dmp file, but still want to figure out which method was called.

Tool request

I am looking for a tool which would load an arbitrary PDB file, I enter the offset and the tool converts it to the method name + offset within the method.

Input:  test.dll+0x1032
Output: test.dll!mymethod+0x2A

Requirements

  • Runs on Windows 7 x64
  • Deals with PDB version 2.0 and 7.0
  • preferred gratis
0

I found out that this can be done with WinDbg (part of the Debugging Tools for Windows) like this:

  1. Open the executable or DLL as dump file (Ctrl+D), not as executable
  2. .symfix;.reload to load the PDB, .sympath+ <path> if you need your own symbols
  3. ln <address> to resolve the method name (e.g. ln test.dll+0x1032)

This is an answer because:

  • WinDbg runs on Windows 7 x64/x86 (e.g. version 6.2.9200 / 6.3.9600)
  • WinDbg loads arbitrary PDBs
  • is available for free
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.