问题标签 [mdbg]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
569 浏览

.net - .NET Core/Full CLR 应用程序的独立调试

我们需要调试在生产 Windows 服务器上运行的 .NET Full CLR 和 Core CLR 应用程序,而不能求助于远程调试 (msvsmon) 或安装完整的 IDE(Visual Studio/Visual Studio Core,...)。

我们如何调试这些应用程序?

可以通过NuGet检索 64 位版本的 MDbg 。它不适用于 32 位或 64 位的 ASP.NET Core 进程。

其他观察:

  • 通过 NuGet 检索到的 MDbg 版本可以通过 强制转换为 32 位corflags /32BITREQ+ /Force Mdbg.exe,这使您可以调试 32 位 Full CLR 进程。
  • 将MDbg.exe 移植到 CoreCLR存在一个开放的 GitHub 问题,这表明它当前不可用。
0 投票
1 回答
296 浏览

c# - 无法使用 MDbg 绑定断点(始终未绑定且无效)

我无法使用命令行MDbg.Net托管代码调试器)设置任何工作(非未绑定断点,以及在命令行上使用csc编译的 C# 模块以及在 Windows 10 下。我花了一整天的时间试图弄清楚如何解决这个问题绝对没有用。以下是我为展示这个奇怪的麻烦而采取的详细步骤。

细节

使用NuGet 4.4.1.4656安装MDbg:

并将路径设置为 xxx/NuGet/MDbg.0.1.0/tools 然后编译一个简单的测试 C# 源代码(使用 .Net frameworks 3.5 和 4.7 尝试过同样的问题):

test0.cs的内容:

下面是一个调试会话,在 test0.cs|.exe|.pdb 所在的同一文件夹下启动,设置断点的尝试不同(无论如何尝试了更多):所有未绑定且不起作用,因为go命令运行程序到其结尾。[有些奇怪的是需要设置路径才能使show命令起作用。否则,您会收到这条荒谬的消息:“错误:源文件 'b:_limbo\GUIonCSharpMono-master\test0.cs' 不可用。 ”]

任何帮助、解决方案、建议、想法,都非常感谢。谢谢你。

0 投票
1 回答
68 浏览

c# - 如何调试 WPF NET 应用程序以检测锁等

我在 NET 3.5 中有一个 WPF MVVM 桌面应用程序。此应用程序在其主窗口中有一个组合框。此 comobobx 绑定到视图模型属性。首次启动应用程序时,将填充此组合框。当从组合框中选择一个项目时,wpf 数据网格会加载数据。然后用户可以对加载到数据网格中的数据进行一些操作。为了执行特定操作,用户从数据网格中选择一行,然后单击执行所需操作的 wpf 按钮。此操作由后台工作人员完成,完成后组合框会刷新。它被刷新是因为组合框中的每个项目都有一个关联的计数器,需要重新计算,然后在操作完成后在组合框中刷新。

我的问题如下:一旦操作完成,如果用户单击组合框,它会冻结并且在几秒钟内没有响应,大约 10 秒,在那几秒钟之后,组合框响应。它只发生在生产环境中的计算机上。在其他计算机中,它不会发生。我无法重现它。

那么我可以使用任何 .NET 调试器来检测死锁、线程中的异常行为、锁等吗?

我正在尝试使用 MDbg.exe,但是从 MDbg 提示控制台,当我尝试附加到进程(应用程序正在运行)时,应用程序冻结...

从 MDbg 提示控制台,我使用以下命令附加到进程:

此外,从 MDbg 提示控制台,我尝试使用以下命令加载 SOS.dll,但它显示未找到扩展:

我不确定我是否正确使用了 MDbg,我之前没有使用过它。

0 投票
0 回答
27 浏览

w3wp - MDbgProcess WaitHandle 没有收到来自 w3wp 的信号

在尝试在 C# 中构建托管调试器时,我们使用来自Microsoft.Samples.Debugging.MdbgEngine. 我们从底层进程接收信号WaitHandle对于MDbgProcess控制台应用程序、winform 应用程序和 IIS 托管在 localhost 上的 ASP.Net 应用程序来说很好。一旦我们将目标应用程序,特别是 IIS 托管的 ASP.Net 应用程序移动到服务器 2008 和 2012 操作系统,WaitHandle 就会停止接收信号。我们尝试了很多调试步骤,包括但不限于:

  • 将应用程序的开发版本复制到服务器上
  • 构建调试器和目标
    • 任何CPU
    • x86
    • x64
  • 在详尽的诊断消息中分层
  • 在服务器上安装 Visual Studio 并在那里构建所有内容
  • 尝试不同的应用程序池和不同的应用程序池设置


有没有人曾经在服务器操作系统上为 ASP.Net 使用过这些组件,或者对可能发生的事情有任何想法?

https://github.com/SymbolSource/Microsoft.Samples.Debugging

谢谢

0 投票
0 回答
62 浏览

c# - 我们可以从同一个可执行文件中调试 .csx(添加断点和监视变量状态)吗?

我目前正在探索向我自己的应用程序添加和调试宏(脚本 .csx)功能的方法。

自 Roslyn(例如:RoslynPad)出现以来,添加宏脚本编写功能很容易。但是在“没有”外部工具(例如:Visual Studio)的情况下调试它似乎不是一件容易的事。

我发现似乎升级到 Mdbg 的 CorDbg。我还探索了 ICorDebug,我认为它实际上仅由 Mdbg 实现(或可能也由某些 Mono 项目实现)。

我们可以从同一个进程调试一个进程吗?断点是否存在并且变量状态是否可以从它实际运行和调试的同一可执行文件中观察,知道脚本只能从工作线程执行?在 VisualStudio 中到达断点时,每个线程都会停止。这是一项要求,还是我们一次只能中断一个线程(通常在 Visual Studio 之外进行调试)?