Microsoft KB Archive/149616

From BetaArchive Wiki
Knowledge Base


Article ID: 149616

Article Last Modified on 10/16/2002



APPLIES TO

  • Microsoft Visual C++ 4.0 Standard Edition



This article was previously published under Q149616

SYMPTOMS

When starting or ending a debugging session, Developer Studio hangs (doesn't respond to user input).

CAUSE

The problem occurs because there is a large amount of text to display in the Output window, and Developer Studio is in a state where it is unable to display it.

Here are two scenarios where this problem will occur:

  • The problem can occur when you start debugging an application that implicitly links to a large number of DLLs. You implicitly link to a DLL by linking with the import library for the DLL. The problem has been known to occur with an application that implicitly links to more than 100 DLLs.

    In this scenario, the debugger is attempting to output a message similar to this one:

    LDR: LdrpMapDll Relocating: Base Name MYDLL.dll

    This message indicates that the operating system is relocating the DLL to load it at an address other than its default base address.
  • The problem can also occur when an application sends out a large number of debug messages as it exits. These could be messages from the application itself, from the C run-time (CRT) library, or from the MFC libraries. This has been known to occur when an application has a large number of memory leaks that are reported by the MFC or the CRT libraries as the application exits.


RESOLUTION

For the first scenario, you could use the /BASE linker option when building the DLLs with which the application implicitly links. The /BASE option allows you to set a preferred base address for a .dll or .exe file. If you set a different base address for each DLL, the operating system will not need to relocate them when loading them, and Developer Studio will not need to send a message to indicate this. Using the /BASE option avoids the problem and allows the application to load more efficiently regardless of whether it is being debugged or not. For more information about the /BASE option, please refer to the online documentation.

For second scenario, if the application being debugged is using MFC, you can temporarily turn off tracing output using the MFC Tracer application, If the application does not use MFC and the debug messages are coming from the CRT library, then you could use the _CrtSetReportMode and _CrtSetReportFile functions in the application. These functions could be used to redirect the messages to a file instead of the Developer Studio Output window. For more information on the CRT debug functions, please refer to the online documentation.

STATUS

Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This problem has been corrected in version 4.0.

MORE INFORMATION

Even though this bug has been fixed in version 4.1, there may be a noticeable delay when you start a debugging session when the application implicitly links to a large number of DLLs.


Additional query words: 4.00

Keywords: kbbug kbfix kbide KB149616