Tag: 调试

发生了托管调试助手’FatalExecutionEngineError’

DEBUG测试时出现以下错误,但同样的测试可以成功运行 。 当我打开工具 – >选项 – >调试 – >常规下的“使用托管兼容模式”选项时,错误框更改为以下内容: 有什么线索是什么? 我正在使用2015年的视觉工作室。

Visual Studio 2012 / C#中断了代码执行,没有设置断点

我在Visual Studio 2012 / C#中遇到了问题,这让我很生气。 我在C#文件中有一行特殊的代码,没有设置断点。 每次执行此行时,调试器都会中断我的代码执行,就像设置了断点一样。 我注意到的唯一区别是左侧的箭头,表示当前步骤。 通常此箭头为黄色(设置断点时)。 就我而言,它是灰色的。 我一直在寻找解决方案,但没有找到任何有用的东西。 我尝试删除所有断点,构建项目,重建项目,清理项目,它仍然出现。 有没有人有同样的问题,并找到了解决方案? 正常箭头: 在我的情况下箭头:

为什么这段代码为(看起来是)相同的输入提供了两个不同的输出?

我正在尝试为一个跳棋游戏编程一些人工智能。 我的节目是说白人玩家有0个动作,尽管我知道有。 GetValidMoves()函数已经过测试,可以在代码的其他区域中使用。 为了尝试隔离程序,我保存了有问题的板状态,然后将其加载回来,看看我是否会遇到同样的问题: using(Stream s = File.Open(“board.dat”, FileMode.Create)) { var bf = new BinaryFormatter(); bf.Serialize(s, board); } Debug.WriteLine(board.GetValidMoves(Color.White).Count()); using (Stream s = File.Open(“board.dat”, FileMode.Open)) { var bf = new BinaryFormatter(); board = (Board)bf.Deserialize(s); } Debug.WriteLine(board.GetValidMoves(Color.White).Count()); 这打印: 0 7 当我期望输出相同时(7是正确的)。 什么可能导致这反序列化后开始工作? 董事会的两个实例看起来完全一样……我打印出所有属性,它们都是一样的。 我不知道从哪里开始? 电路板的第一个实例(反序列化之前)是克隆的结果。 我可以克隆它吗? 有“悬挂参考”吗? GetValidMoves: public IEnumerable GetValidMoves(Color c) { var jumps = […]

调试类型初始值设定项中的exception

我有一个没有静态构造函数的静态类,但是有许多静态成员。 首次使用该类时,我抛出一个TypeInitializationException。 我打破了CLRexception,我禁用了“Just My Code”。 问题是我在第一次使用这个类时只会遇到这个exception; 我没有打破失败的静态字段初始化程序。 我当然可以删除静态成员,直到找到罪魁祸首,但有更简单的方法吗? 有没有人有任何调试静态字段初始化的技巧?

调试从非托管C ++调用的托管.NET代码

我已经阅读了SO上提供的解决方案,但到目前为止还没有解决我的问题。 我的初创项目是一个非托管的C ++项目(我们称之为TestWrapper)。 目标是让TestWrapper调用一个托管C ++项目,然后调用我的C#项目。 这工作正常,我没有运行它的问题。 但是,我的C#代码中出现了exception。 由于某种原因,断点不会被命中,并且实际的调试中断发生在ntdll.dll 。 我尝试右键单击C#项目并启用非托管调试,但这不能解决问题。 如果有人能指出我的解决方案,我将非常感激。 我要继续并包括项目布局: TestWrapper (unmanaged C++) -> ManagedWrapper (managed C++) -> MyCSharpProject (C#) 我有一种感觉,它在于调试的配置,但我知道甚至不知道从哪里开始看。

如何在WinForm应用程序中调试此StackOverflowException?

我有一个winform应用程序。 每隔几秒我检查一些日志文件,读入任何新数据并将任何新数据插入数据库。 当我运行应用程序大约一个小时1/2时,我得到一个StackOverflowException 。 整个期间的日志文件中没有新数据,因此没有新的数据添加到数据库中。 代码在这里出错… if (pictureBox == null) { continue; } if (pictureBox.InvokeRequired) { var toolTip = new ToolTip(); GameServer tempGameFile = gameServer; pictureBox.Invoke(new MethodInvoker( () => toolTip.SetToolTip(pictureBox, string.Format( “{0} : Last Checked: {1}; Last Updated: {2}”, tempGameFile.Name, tempGameFile.CheckedOn.ToLongTimeString(), tempGameFile.UpdatedOn.HasValue ? tempGameFile.UpdatedOn.Value.ToLongTimeString() : “-No Date Set-“)))); } pictureBox.Image = Resources.RedButton; 和pictureBox.Invoke(..)抛出该错误。 那么..我不知道我怎么能想到这一点来弄清楚发生了什么? 有什么建议? […]

在远程服务器上调试Web服务

我有一个用C#编写的客户端应用程序,它访问特定服务器上的Web服务。 Web服务也在Framework 1中以C#编写。我有兴趣调试应用程序并以调试模式进入Web服务。 我想关注并了解该Web服务器中的某些过程。 有人知道是否可以做到吗? 我可以帮忙吗? 谢谢弗洛

调试本机代码

我有一个C#服务,它调用最初用VC6编写的C DLL。 我试图检查DLL中有一个错误。 在尝试调试工作的噩梦之后,我最终将dll添加到包含C#服务的VS2005解决方案中,并添加了必要的_CRT_SECURE_NO_WARNINGS 。 使用’installutil.exe’工具注册该服务的调试版本。 通过调用System.Diagnostics.Debugger.Break();我可以让调试器在输入dll的行之前中断System.Diagnostics.Debugger.Break(); 。 我在网上发现了一些关于调试非托管代码的指令,并启用了“启用非托管代码调试”复选框,我还尝试打开选项 – >调试 – >本机’加载DLL导出’和’启用RPC调试’(即使它不是COM)。 我还将debug dll和.pdb复制到与服务相同的bin目录中。 但是,非托管代码没有进入我真正需要的代码。 更新 :我在DLL属性中找到了调试类型,并根据几个站点上的建议将其设置为“混合”,但无济于事。 UPDATE2 :我的项目现在将调试dll和pdb发送到与调试服务相同的目录。 仍然无法调试DLL。

如何使用messagebox输出调试信息

我正在使用MessageBox尝试进行一些手动调试,这就是我想出来的,我该如何才能使它工作? private void DisplayMessageBoxText() { MessageBox.Show(“Alert Message”); }

为什么网站项目在配置中没有发布模式?

我目前正在网站项目中工作 。我想在发布模式下构建项目,遗憾的是,visual studio没有用于构建的发布模式,只有调试模式。 在Web应用程序项目中,我们在构建调试和发布中看到两个选项。 我想知道为什么网站项目在build中有调试模式。我读过关于调试和发布模式构建,发布模式具有优化代码并且开销较少 。