2011-11-22 41 views
5

我的程序的偉大工程與Windows XP。我正在嘗試添加更多功能,並使用OutputDebugString()來顯示一些調試信息。在XP上完美運行。現在,當我想在Windows 7x64上使用相同的程序。我沒有看到DebugView中的任何輸出。的OutputDebugString()不工作在Windows 7x64

F1!F1!F1!

+0

'OutputDebugString'在7 x64中工作得很好。 'DebugView'還顯示applciations的輸出。 –

回答

11

對不起,要恢復一個老問題,但我們花了好幾天搜索互聯網來回答這個問題,最終結束了記錄連接呼叫。我在這裏張貼,以幫助在相同情況下的其他人。在調試x64混合模式應用程序時,我們的具體問題是在調試輸出窗口中從OutputDebugString,MFC TRACE等獲取輸出。

據微軟稱,顯然是爲了調試的x64混合模式的應用程序調試器類型「自動」(在Debugging->調試器類型屬性頁中設置)默認爲管理而不是混合。在調試64位版本時,這需要明確設置爲「混合」,以便看到託管和本地調試輸出。

+1

在我的情況下,我從IE擴展中調用輸出調試字符串。 IE總體上不允許這樣的通信。所以我最終以管理員身份運行IE並以管理員身份運行DebugView。 – vrrathod

+0

在我的情況下,我正在調用OutputDebugStringW。將其更改爲OutputDebugStringA可正常工作。 –

3

3個小建議:

  1. 確保你正式拍攝事件(頂部菜單 - >捕獲 - >捕獲的Win32標記),如果你的程序在運行
  2. 低完整性(它在運行時是否會提供安全警告),您還需要以低完整性運行調試視圖。要做到這一點,您需要在運行之前更改dbgview.exe的完整性級別。
  3. 如果你正在使用Visual Studio和與調試運行(按F5),那麼調試輸出實際上是由Visual Studio捕獲(在輸出窗口)。嘗試用Ctrl f5運行你的程序。
2

有許多的原因,這可能會或可能無法正常工作。我不小心禁用此 - 在這裏都是你需要檢查得到這個工作的事情:

  1. 是從Output窗格中的調試輸出的文本被重定向到Immediate窗格中,因此你沒有看到嗎?要關閉該關:

    • Debug
    • Options and Settings
    • [ ] Redirect all Output Windows text to the Immediate Window
  2. 是在Output窗格中可見?

    • Debug
    • Windows
    • Output
  3. Output窗格你有Program Output啓用?窗格

  4. [x] Program Output
    • Debug
    • Windows
    • Output
    • 右鍵點擊任何地方你有正確的選擇Debugging Type

      • Solution Explorer(查看>解決方案資源管理器)窗格項目
      • 右鍵單擊
      • Properties
      • Debugging
      • Debugging Type:從Auto要麼NativeMixed
    • 變化
    • 在程序啓動之前調試器是否試圖連接?要關閉Attach關:

      • Solution Explorer(查看>解決方案資源管理器)窗格項目
      • 單擊鼠標右鍵,
      • Properties
      • Debugging
      • Attach:改變No
    • 您使用的是OutputDebugStringW()?請嘗試使用OutputDebugStringA()代替。

    • 最後,你是否在調試模式下啓動程序? :-)嘿,你永遠不知道!

      • Debug
      • Start Debugging (F5)

我還沒有看到一個完整列表之前,所以上面都是我不得不確認已正確設置的東西。