草庐IT

DEBUGGING

全部标签

c# - Visual Studio 2015 调试在多线程应用程序中不起作用

在我的项目中,我有大量代码应该在单独的线程上执行而不会阻塞UI。当调试器遇到此代码中的断点时,VS2015会卡住5-10秒。之后,如果我尝试继续调试(通过按StepOver、StepIn或Continue),应用程序会从暂停状态变为工作状态,调试工具正在滴答作响,但什么也没有发生,CPU利用率为0%。如果我然后按BreakAll,“光标”(不知道正确的术语)显示在Application.Run(newForm1());处。在Program.cs中Main()是。由于我是C#的新手,我认为我的多线程方法存在一些问题,但显然无论我尝试什么都会发生-使用async/awaitwithTask

c# - Debugger.Launch 不工作

我目前正在尝试为在外部(而不是从visualstudio中)启动的进程启动调试器。我似乎无法真正启动调试器,因为它似乎什么也没发生。在此过程中,我添加了这段代码:Debug.Assert(Debugger.IsAttached==false,"Shouldbenodebugger");if(!Debugger.IsAttached){Debug.Assert(Debugger.Launch(),"Debuggernotlaunched");}Debugger.Break();Debug.Assert(Debugger.IsAttached==true,"Debuggershouldbe

c# - Visual Studio 2008 : Step to next line is very slow when debugging managed code

当通过F10逐行单步执行我的C#代码时,调试器需要一秒钟多的时间才能到达下一行。我试过删除所有监视和断点,但这没有任何区别。这正常吗?很长一段时间以来都是这样,所以我什至不记得这是不是更好了。我的开发计算机是一台四核机器,没有后台任务事件并且有足够的RAM。如果不正常,我还能尝试什么?它仍然可以使用,但是一个不那么迟钝的用户界面会很棒...... 最佳答案 可能发生的情况是,您在调用堆栈框架中有一个变量,该变量具有昂贵的.ToString方法。在2008年,无论窗口是否实际可见,调用堆栈窗口的数据都会在每一步重建。构建此窗口的一部分

c# - 在断言失败时中断调试器

有没有办法在断言为假时中断调试器并使用VisualStudio调试器运行应用程序。早些时候,当我调试Windows应用程序时,我会遇到异常并且调试器会中断,但现在在智能设备上显示断言失败窗口和堆栈跟踪,但我还想查看变量值等。 最佳答案 愚蠢的我,解决方案很简单。当窗口弹出时,在调试器中按暂停键:) 关于c#-在断言失败时中断调试器,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4

c# - 你能设置 VS2008 中断 try-catch 语句中的错误吗

我喜欢VB6的一个原因是,无论您设置了何种错误处理,您都能够告诉开发环境在所有错误上中断。是否可以在VS2008中做同样的事情,以便调试器在出现任何错误时停止,即使它发生在try-catch语句中?当您处理一个包含500条记录的文件并且其中一条记录失败时,问题尤其严重-谁知道是哪条记录-您不想修改代码以便您的for计数器在该记录之外初始化for循环-这是草率的长期。您只希望调试器知道由于您在某处放置的某些设置而停止。 最佳答案 是的,转到“调试”菜单,选择“异常...”,为“公共(public)语言运行时异常”勾选“抛出”

c# - 在 Visual Studio 2010 中运行事件项目

是否有快捷方式可以在我的解决方案中运行项目而不设置它(设置为启动项目)而是将其与事件文件相关联?我的意思是运行一个文件处于事件状态的项目,但我不希望它成为默认文件。它应该是与F10不同的快捷方式,因为我主要是在谈论调试! 最佳答案 您可以在解决方案的属性中进行设置: 关于c#-在VisualStudio2010中运行事件项目,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4860

c# - 调试 - 如何逐行执行代码?

我很难在VisualStudio中调试我的C#应用程序。我不知道如何逐行调试代码,但不是在程序启动的那一刻(因为我不得不多次按F5,因为程序需要大约200行才能初始化)。我的意思是让我们假设我希望调试在某个时刻开始。比如在每一行代码中都有一个断点,但实际上没有创建断点(每次我想要创建它们都会花费很多时间)。我希望我有点清楚。 最佳答案 我不是完全清楚你在找什么......如果您不确定如何逐行单步执行,请在要开始逐行调试(或暂停应用程序)的地方放置一个断点,然后使用F10作为“越过”或F11作为“步入”而不是F5(“开始”)。如果您不

c# - 打印数组和任意类型列表的常用方法

这个问题在这里已经有了答案:ConvertalisttoastringinC#(14个答案)关闭3年前。每当我调试一段涉及数组或整数、double、字符串等列表的代码时,我有时更喜欢将它们打印出来。我为此所做的是为不同类型编写重载的printArray/printList方法。例如我可能有这3种打印各种类型数组的方法publicvoidprintArray(int[]a);publicvoidprintArray(float[]b);publicvoidprintArray(String[]s);虽然这对我有用,但我仍然想知道是否可以有一个通用方法来打印任何类型的数组/列表。这也可以扩

c# - C#中#if DEBUG预处理器指令的用法是什么?我们什么时候必须使用这个?

C#中#ifDEBUG预处理器指令的用法是什么?我们什么时候必须使用它? 最佳答案 在Debug模式下:#ifDEBUGSystem.Console.WriteLine("Debugversion");#endifSystem.Console.WriteLine("Output");输出为DebugversionOutput在Release模式下:#ifDEBUGSystem.Console.WriteLine("Debugversion");#endifSystem.Console.WriteLine("Output");输出为O

c# - 检测调试器是否已连接*并*单步执行

我知道System.Diagnostics命名空间中的Debugger类具有IsAttached属性。在某处是否有一个属性可以增强此调用并告诉我我们是否真的在单步执行代码,而不是简单地被附加?我知道这不太可能发生,但了解它会很有用。编辑也许一个更好的问题,而不是“步进”是运行一些代码:当调试器第一次“中断”时(进入Debug模式,附加后)当它再次运行时(但仍然附加,但不是“单步执行”)。 最佳答案 您可以从Debugger.CurrentMode属性获取调试器状态。但这只会告诉您它当前是否处于中断状态或程序是否正在运行。没有“步骤”