在Visual Studio 2008上设置预调试事件

5

在使用Visual Studio调试程序之前,我希望能运行一个任务。

我需要每次调试程序时都运行这个任务,因此后构建事件并不够好用。

我查看了设置中的“调试”选项卡,但没有找到相应选项。

有什么办法可以实现这个需求吗?

2个回答

2

我认为你唯一可以尝试的方法是在项目属性调试页面中尝试使用Command属性进行实验,但我不认为这会奏效。

编辑:如果你想启动一个批处理文件,请按照以下方式操作:

yourbatch.bat $(targetPath)

在你的batch.bat文件中,你可以这样调用你的程序,
call %1 %2 %3 %4 %5 %6 %7 %8 %9

%2和%3代表可能的程序参数(由您的IDE提供)

我想知道的唯一一件事是您的程序是否会直接调试(我认为您可能需要在IDE中手动附加它)


听起来是个好主意,但是你怎么把两个命令放在同一行上呢?比如我想先调用myscript.bat,然后再调用$(TargetPath),你怎么在同一条命令行上调用它们呢?另外,调试器不会尝试调试myscript.bat吗? - 0x26res
1
@jules 把所有的命令放在一个 .cmd/.bat 文件中。你可以从一个 .bat 文件内调用另一个 .bat 文件(请参考 http://www.computerhope.com/batch.htm 了解帮助),使用 CALL 命令。 - Dennis
有人发现它是否可以直接调试项目吗? - Avery3R

1
在“调试”构建的编译选项中添加一个预构建步骤,并且不要在“发布”构建中使用它。(编辑:预构建步骤设置在项目属性的“生成事件”部分)。
如果你在谈论代码中的函数或其他内容,那么请使用预编译器标志。例如,在你的Debug构建中,你可能有“_DEBUG”或类似的编译器标志...所以在代码中你可以这样做。
#ifdef _DEBUG
doMySpecialTask();
#endif

只有在使用调试版本时才会调用它。

编辑:从下面的评论中提取信息: 要在运行时动态检测调试器,可以在 Windows 中使用 IsDebuggerPresent() 函数。Macs 也有一个 AmIBeingDebugged()。这对于希望在调试时使程序表现不同的情况很有用,但我不建议除非没有其他有用的选项。修改程序在调试时的行为可能会导致问题消失或以不同的方式显现。


即使我不需要构建应用程序,预构建事件也会被调用吗? - 0x26res
@jules 不,如果您不构建应用程序,则可以使用#ifdef语句。例如,doMySpecialTask()可以运行.bat文件或.cmd文件来启动应用程序,甚至可以启动应用程序。这将在您使用调试构建时起作用,而不仅仅是在构建时。如果您需要始终动态检测调试器,则在Windows中使用IsDebuggerPresent函数。请参见http://msdn.microsoft.com/en-us/library/ms680345%28v=vs.85%29.aspx - Dennis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接