簡體   English   中英

如何將日志記錄寫入Visual Studio輸出窗口?

[英]How to write loggings to the Visual Studio output window?

我想用一種日志記錄來擴展我的應用程序,在其中可以選擇記錄到文件和/或記錄到“ Visual Studio”“輸出”窗口。

對於后者,似乎函數OutputDebugString()可以解決問題,但僅適用於“ Debug”構建,而我希望也適用於“ Release”構建,因此我想到了使用跟蹤點的想法。 (至少,我認為跟蹤點也正在寫入“發布”版本的“輸出”窗口),但是在這里我遇到了一個令人沮喪的問題:
跟蹤點是一種特殊的斷點,似乎被寫入* .suo文件,它們位於<project directory>\\.vs\\<project name>\\v15目錄中(請參閱Visual Studio斷點保存在哪里? 。,謝謝,最高)。
我的想法是編寫一個postbuild事件,向* .suo文件中調用log()操作的每一行添加一個跟蹤點。

但是,由於* .suo文件為二進制:-(

是否有人知道在構建時將跟蹤點添加到應用程序的另一種方法,或者如何將其寫入(使用“調試” /“發布”開關)到Visual Studio的“輸出”窗口?

提前致謝

OutputDebugString()應該可以在Release版本中使用-如果有任何消耗輸出的內容(例如WinDbg。) Windows調試工具(WinDbg,KD,CDB,NTSD)至於為什么不這樣-可能想研究一下,例如您的應用程序可能無法按預期的方式構建。

據我了解,Tracepoints僅在調試器(Debug或Release)中工作-但我認為這是可行的,調試器將在應用程序加載/啟動時(或在運行期間)實際將指令替換為BRK,以及何時應用程序觸發中斷,調試器將其捕獲,替換原始指令,然后執行應執行的任何任務(無論是暫停,增加計數器等),但我認為Tracepoints僅適用於連接的調試器,因為否則,將無須執行替換,捕獲和替換操作,並且代碼將不間斷地運行。

但是,如果我正確地理解了您的意圖,則實際上您可能想要使用諸如事件跟蹤 *之類的東西。 這應該將您要查看的內容輸出到標准的Windows日志文件,將在調試器內部或外部進行調試或發布。 但是,它不會輸出到VS輸出窗口。 為此,OutputDebugString()應該是正確的操作。

*免責聲明-暫時不使用它們,因為我們現在使用VS輸出和WinDbg-但這似乎是部署應用程序的一種更好的方法。

暫無
暫無

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

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