簡體   English   中英

Visual Studio 2008輸出窗口停止工作

[英]visual studio 2008 output window stopped working

我在VS 2008中從事C ++項目已有一段時間了。直到最近,終止我的應用程序后,輸出窗口將顯示我是否有任何內存泄漏。 但是,幾天前,我注意到它停止顯示此有價值的信息。 我也嘗試過扔一些printf(),但是輸出窗口也沒有顯示。

我猜我在某個地方更改了偏好,但我似乎找不到。 現在顯示的所有輸出是已加載/卸載的dll。 有任何想法嗎?

謝謝,邁克

根據我自己的經驗,內存泄漏輸出丟失可能是由於不同的原因。 總結最重要的:

  1. 源代碼中的更改如下:

    • 禁用內存泄漏報告(即,使用_CrtSetDbgFlag
    • 安裝自定義報告掛鈎(請參見_CrtSetReportHook, _CrtSetReportHook2
    • 將輸出重定向到文件(請參閱CrtSetReportMode
    • 源代碼中的更改導致應用程序終止時出現“崩潰”現象-在到達報告內存泄漏的點之前,該應用程序無提示地終止而沒有任何問題的提示(這似乎不太可能發生,因為這似乎不太可能發生)。
  2. 開發環境中的設置導致輸出重定向到另一個窗口。 一種可能是:工具\\選項\\調試\\常規\\將所有“輸出窗口”文本重定向到“立即窗口”(從底部開始的第五個)。 這里可能存在其他可能性。

我想排除第2點的一種可能性是在(main.cpp)行中創建一個簡單的控制台應用程序:

#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>

#ifndef DEBUG_NEW
#define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__)
#define new DEBUG_NEW
#endif

int _tmain(int argc, _TCHAR* argv[])
{
    int nOldState = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
    _CrtSetDbgFlag(nOldState | _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);

    int *pInt = new int[100];
    return 0;
}

如果正確運行此應用程序,則輸出內存泄漏,那么很可能您會遇到情況1

當然,我排除了顯而易見的原因為什么輸出會消失(其中一些已經在注釋中提到)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM