草庐IT

DEBUGGING

全部标签

c# - 禁止在 MsBuild 中生成 PDB 文件

我想从我的构建中挤出更多的速度,并且想知道我是否可以指示msbuild不生成PDB文件。我正在传递Configuration=Release和DebugSymbols=false属性,但没有成功。 最佳答案 您的发布配置中可能有PDB生成。将此添加到您的发布设置:falseNone您也可以在visualstudio中的项目配置中执行此操作。DisablePDBGeneration此外,如果从命令行运行MSBuild,命令行参数将为MSBuild.exeYourProject.csproj/p:DebugSymbols=false/p

c# - BackgroundWorker 中未处理的异常

我的WinForms应用使用了多个BackgroundWorker对象从数据库中检索信息。我正在使用BackgroundWorker,因为它允许UI在长时间运行的数据库查询期间保持畅通无阻,并且它为我简化了线程模型。我在其中一些后台线程中偶尔会遇到DatabaseExceptions,并且我在调试时在工作线程中至少看到了其中一个异常。我相当有信心这些异常是超时,我认为不时发生这种情况是合理的。我的问题是当这些后台工作线程之一发生未处理的异常时会发生什么。我不认为我可以在另一个线程中捕获异常,但我可以期望我的WorkerCompleted方法被执行吗?我可以查询BackgroundWor

c# - BackgroundWorker 中未处理的异常

我的WinForms应用使用了多个BackgroundWorker对象从数据库中检索信息。我正在使用BackgroundWorker,因为它允许UI在长时间运行的数据库查询期间保持畅通无阻,并且它为我简化了线程模型。我在其中一些后台线程中偶尔会遇到DatabaseExceptions,并且我在调试时在工作线程中至少看到了其中一个异常。我相当有信心这些异常是超时,我认为不时发生这种情况是合理的。我的问题是当这些后台工作线程之一发生未处理的异常时会发生什么。我不认为我可以在另一个线程中捕获异常,但我可以期望我的WorkerCompleted方法被执行吗?我可以查询BackgroundWor

c# - 当它被抛出并被捕获时,不要在那个异常处停止调试器

在工具/异常中,我设置了调试器在抛出异常时停止的选项。不管抓不抓。如何排除该规则的异常(exception)情况?在我的代码中的某处,有一个捕获的异常是程序逻辑的一部分。所以我显然不希望每次遇到异常时都停止调试器。示例:我想忽略第344行的空引用异常(已捕获)。我想在所有其他异常时停止 最佳答案 DebuggerHidden是你的friend!Thecommonlanguageruntimeattachesnosemanticstothisattribute.Itisprovidedforusebysourcecodedebugge

c# - 当它被抛出并被捕获时,不要在那个异常处停止调试器

在工具/异常中,我设置了调试器在抛出异常时停止的选项。不管抓不抓。如何排除该规则的异常(exception)情况?在我的代码中的某处,有一个捕获的异常是程序逻辑的一部分。所以我显然不希望每次遇到异常时都停止调试器。示例:我想忽略第344行的空引用异常(已捕获)。我想在所有其他异常时停止 最佳答案 DebuggerHidden是你的friend!Thecommonlanguageruntimeattachesnosemanticstothisattribute.Itisprovidedforusebysourcecodedebugge

c# - 在 Debug模式下单步执行时跳过方法的属性

有没有我可以在方法上使用的属性,以便在Debug模式下单步执行某些代码时,调试器停留在方法的外部? 最佳答案 [DebuggerStepThrough](docs) 关于c#-在Debug模式下单步执行时跳过方法的属性,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/445276/

c# - 在 Debug模式下单步执行时跳过方法的属性

有没有我可以在方法上使用的属性,以便在Debug模式下单步执行某些代码时,调试器停留在方法的外部? 最佳答案 [DebuggerStepThrough](docs) 关于c#-在Debug模式下单步执行时跳过方法的属性,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/445276/

c# - Visual Studio 调试 "quick watch"工具和 lambda 表达式

为什么在“快速观察”窗口中调试时不能使用lambda表达式?UPD:另见LinkLink 最佳答案 不,你不能在watch/locals/immediate窗口中使用lambda表达式。正如Marc指出的那样,这非常复杂。不过,我想更深入地探讨这个话题。大多数人在调试器中执行匿名函数时没有考虑到的是,它不会在真空中发生。定义和运行匿名函数的行为改变了代码库的底层结构。一般来说,尤其是从即时窗口更改代码是一项非常困难的任务。考虑以下代码。voidExample(){varv1=42;varv2=56;Funcfunc1=()=>v1;

c# - Visual Studio 调试 "quick watch"工具和 lambda 表达式

为什么在“快速观察”窗口中调试时不能使用lambda表达式?UPD:另见LinkLink 最佳答案 不,你不能在watch/locals/immediate窗口中使用lambda表达式。正如Marc指出的那样,这非常复杂。不过,我想更深入地探讨这个话题。大多数人在调试器中执行匿名函数时没有考虑到的是,它不会在真空中发生。定义和运行匿名函数的行为改变了代码库的底层结构。一般来说,尤其是从即时窗口更改代码是一项非常困难的任务。考虑以下代码。voidExample(){varv1=42;varv2=56;Funcfunc1=()=>v1;

c# - 什么是线程退出代码?

调试时输出窗口中的线程退出代码到底是什么?它给我什么信息?它在某种程度上有用还是只是内部的东西,不应该打扰我?Thethread0x552chasexitedwithcode259(0x103).Thethread0x4440hasexitedwithcode0(0x0).可能有某种可能的退出代码列表及其重要性吗? 最佳答案 实际上似乎没有很多关于这个主题的解释显然但是退出代码应该用于指示线程如何退出,0往往意味着它安全退出,而其他任何事情往往意味着它没有按预期退出。不过这个exitcode可以自己在代码中设置,完全忽略这个。我能找