如何在客户端调试我的应用程序exe

时间:2014-02-19 15:34:14

标签: c# windows

我正在开发一个Windows应用程序,它在客户端显示了一些性能问题。 因此,我在每行代码后使用此代码在文件中创建了一个Debug Logger C            #if DEBUG              LogwithTime(“此过程完成”);            #ENDIF

但我无法记录日志,因为该文件未在DEBUG模式下运行... 如何将它置于DEBUG模式,以便我可以在#if DEBUG和#endif之间使用代码?

由于

4 个答案:

答案 0 :(得分:3)

如果你正在进行Debug构建,

#if DEBUG只包含代码,并且在Release版本中省略(即这是#if DEBUG预处理器指令的全部内容)。

要在发布版本中包含此日志记录代码,我要做的是将预处理器指令更改为更有意义的内容,然后从项目属性中控制它。换句话说,将代码更改为

#if INCLUDE_TIME_LOGGING LogwithTime("This Process completed"); #endif

然后转到项目属性,对于Release版本,将INCLUDE_TIME_LOGGING放在Project-> Build->条件编译符号中。

完成故障排除后,您可以将其从条件编译符号中删除,重建,并且您的代码将不受此调试日志记录的影响(因此效率更高一些)。使其易于控制。

正如其他人所说,log4net对此也很有用,并且不需要重建,因为你可以通过配置文件来控制它。

应该这样做!

答案 1 :(得分:2)

使用调试配置编译应用程序时,将设置DEBUG标志。您已使用发布配置编译了应用程序。

答案 2 :(得分:1)

您需要在调试模式下重新编译整个解决方案并将其发送给您的客户端。

您不能只将其“置于”调试或发布模式。在发布模式下编译的代码已经过优化,即使从理论的角度来看也无法将其移至Debug,例如,您的客户端计算机上不存在您的日志记录行。

答案 3 :(得分:0)

有时候,在这种情况下,您可以在调试模式下为客户端提供包含dll的补丁,以获取有关您所遇问题的更多详细信息。之后,您可以再次发布版本dll。

如果没有真正的理由提供发布dll,我们在某些应用程序中只提供调试dll。