Microsoft KB Archive/170116: Difference between revisions
(stage2) |
m (Text replacement - """ to """) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 24: | Line 24: | ||
WinDbg or KD can't locate symbols in modules when multiple executable files have matching basenames differing on extension only.<br /> | WinDbg or KD can't locate symbols in modules when multiple executable files have matching basenames differing on extension only.<br /> | ||
<br /> | <br /> | ||
Debugger can't locate symbols between loaded driver modules with same base name. For example, | Debugger can't locate symbols between loaded driver modules with same base name. For example, "S3" derived from S3.Sys and S3.Dll. | ||
<br /> | <br /> | ||
Line 31: | Line 31: | ||
== CAUSE == | == CAUSE == | ||
The dot operator is already used by Windbg and MSDev and cannot be overloaded unambiguously. This cannot be fixed. So, specifying the extension doesn't work. For example, | The dot operator is already used by Windbg and MSDev and cannot be overloaded unambiguously. This cannot be fixed. So, specifying the extension doesn't work. For example, "x s3.dll!*". | ||
<br /> | <br /> | ||
Line 38: | Line 38: | ||
== RESOLUTION == | == RESOLUTION == | ||
When you build software components, do not use the same file name with different extensions. Change the basename so that it is different. For exmaple, with a video drivers you could name them | When you build software components, do not use the same file name with different extensions. Change the basename so that it is different. For exmaple, with a video drivers you could name them "S3mini.sys and S3Disp.dll" instead of S3.SYS and S3.DLL. | ||
<br /> | <br /> | ||
Line 50: | Line 50: | ||
<pre class="FIXEDTEXT"> kd | <pre class="FIXEDTEXT"> kd> !reload /u S3 | ||
kd | kd> !reload /u S3 | ||
kd | kd> !reload S3.dll | ||
kd | kd> lm </pre> | ||
<br /> | <br /> | ||
Best solution is not to use the same basename in a single namespace. | Best solution is not to use the same basename in a single namespace. |
Latest revision as of 10:04, 21 July 2020
PRB: Can't Find Symbols in Modules When Exe's Have Same Basename |
Q170116
The information in this article applies to:
- Microsoft Win32 Device Driver Kit (DDK) for Windows NT, versions 3.5, 3.51, 4.0
SYMPTOMS
WinDbg or KD can't locate symbols in modules when multiple executable files have matching basenames differing on extension only.
Debugger can't locate symbols between loaded driver modules with same base name. For example, "S3" derived from S3.Sys and S3.Dll.
CAUSE
The dot operator is already used by Windbg and MSDev and cannot be overloaded unambiguously. This cannot be fixed. So, specifying the extension doesn't work. For example, "x s3.dll!*".
RESOLUTION
When you build software components, do not use the same file name with different extensions. Change the basename so that it is different. For exmaple, with a video drivers you could name them "S3mini.sys and S3Disp.dll" instead of S3.SYS and S3.DLL.
MORE INFORMATION
Developers keep inquiring why the debuggers cannot distinguish between MyFile.sys and MyFile.dll. This arises most often with video driver developers.
For example, in WinDBG the only way to do it currently is to unload the one you don't want and make sure the one you do want is the only one loaded:
kd> !reload /u S3 kd> !reload /u S3 kd> !reload S3.dll kd> lm
Best solution is not to use the same basename in a single namespace.
Additional query words:
Keywords : kbdisplay kbprogramming kbtool
Issue type : kbprb
Technology : kbAudDeveloper kbWinDDKSearch kbWin32sSearch kbWin32DDKSearch kbWin32DDKNT350 kbWin32DDKNT351 kbWin32DDKNT400 kbWin32DDKNTSearch
Last Reviewed: October 22, 2000 |