No source level debugging when breakpoint is hit



I can't see source code in SoftIce.  When I set a breakpoint in my code, only assembly language comes up.


In SoftIce, type "file *". If your source files are listed, this means you compiled with the correct symbol information, but they were not associated with the correct address in memory when your module loaded.

One reason this can happen is when there are two modules beginning with the same first eight charectors. SoftIce cannot differentiate between files by long file names or file extensions. This often happens when there is an application with the same name as the driver. If this is the case, just rename the application and the symbols should be associated correctly.

If that does not fix the problem, you can manually relocate the symbol table. First, use "map32 <DRIVER name>" to get the addresses of each section of code. Then use the symloc command to remap each section of the symbol table. Here is an example using a driver called 'Threads':

:map32 threads

Owner Obj Name Obj# Address Size Type

Threads .text 0001 0008:F43D82E0 00002A00 CODE RO

Threads .data 0002 0023:F43DACE0 000000C8 IDATA RW

:symloc 1 8 f43D82E0

:symloc 2 23 f43dace0

Often when you must manually relocate the symbol table, it is useful to put an "_asm int 3" in DriverEntry. This will force SoftIce to pop up when your driver loads, and you can then relocate the symbol table and start debugging.

Old KB# 11883
Comment List
Related Discussions