2011-05-06 40 views
4

我想在Visual Studio開始調試我的程序之前運行一個任務。 我每次調試程序時都需要運行此任務,因此生成後事件不夠好。在Visual Studio 2008上設置預調試事件

我查看了設置的「調試」選項卡,但沒有這樣的選項。

有沒有辦法做到這一點?

回答

2

你可以嘗試(IMO)的唯一事情是實驗與您項目屬性調試頁面命令屬性,但我不認爲會工作。

編輯:如果你想開始一個批處理文件,像這樣做,

yourbatch.bat $(targetPath) 

和yourbatch.bat你可以打電話給你這樣的程序,

call %1 %2 %3 %4 %5 %6 %7 %8 %9 

,其中2% ...%3代表可能的程序參數(由您的IDE提供)

我只想知道您的程序是否會直接調試(我認爲您可能必須手動附加到我DE)

+0

這聽起來是個好主意,但是如何將兩條命令放在同一行上?假設我想調用'myscript.bat',然後調用'$(TargetPath)',你將如何在同一個命令行上調用它們。調試器也不會嘗試調試'myscript.bat'嗎? – Arthur 2011-05-09 09:16:39

+1

@jules將所有命令放在.cmd/.bat文件中。您可以從一個.bat文件中調用.bat文件。bat文件(請參閱http://www.computerhope.com/batch.htm尋求幫助)使用CALL命令。 – Dennis 2011-05-09 13:27:03

+0

有沒有人發現它是否會直接調試項目? – Avery3R 2013-09-18 00:34:55

1

爲您的「調試」構建的編譯選項添加預構建步驟,並且沒有在「發佈」構建中。 (編輯:預編譯步驟在項目屬性的「生成事件」部分中設置)

如果您正在討論函數或代碼中的某些內容,請使用預編譯器標誌。例如,在你的調試版本,你可能有「_DEBUG」或編譯器標誌類似的東西...所以在代碼中,你可以做

#ifdef _DEBUG 
doMySpecialTask(); 
#endif 

,並使用調試版本時,它纔會被調用。

編輯:從以下注釋中移動信息: 要在運行時動態檢測調試器,可以使用Windows中的IsDebuggerPresent()函數。 Mac也有一個AmIBeingDebugged()。如果你希望程序在調試時行爲不同,這很有用,但除非沒有其他選項可用,否則我不建議這樣做。調試時修改程序的行爲可能會導致問題消失或以不同的方式顯示。

+0

但是,即使我不需要構建應用程序,預構建事件也會被調用嗎? – Arthur 2011-05-06 09:33:19

+0

@jules不,不,如果你不建立應用程序。在這種情況下,你可以使用'#ifdef'語句來代替。例如'doMySpecialTask​​()'可以運行.bat文件或.cmd文件來啓動應用程序,甚至啓動應用程序。 無論何時使用調試版本,這都會工作,而不僅僅是當你構建它時。 如果您需要動態檢測調試器,請使用Windows中的「IsDebuggerPresent」函數。請參閱http://msdn.microsoft.com/en-us/library/ms680345%28v=vs.85%29.aspx – Dennis 2011-05-06 09:57:03