问题标签 [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 投票
2 回答
1124 浏览

c# - 无法使用 mdbg 从进程中分离

这个问题开始,我现在有了可以使用 Mdbg API 附加到进程的代码。

问题是,如果需要,我无法脱离流程。当我调用 mgProcess.Detach().WaitOne(); (其中 mgProcess 是从 MDbgEngine 对象创建的 MDbgProcess )我收到以下错误消息:

如果我只是尝试调用mgProcess.Detach()mgProcess.CorProcess.Detach()我会得到相同的结果。

有谁知道分离 Mdbg 进程的正确方法?

0 投票
2 回答
927 浏览

asp.net - 使用 Mdbg 的 ASP.NET 的基于 Web 的堆栈转储工具?

MySpace.com的首席系统架构师 Dan Farino做了一个精彩的演示,展示了一个基于 Web 的堆栈转储工具,该工具对给定进程中运行的所有线程进行分类(它们在做什么、它们执行了多长时间等) .)

highscalability.com上也总结了他们的技术:

  • 性能收集器
    通过 UDP 集中收集性能数据。比 Windows 更可靠,允许任何客户端连接并查看统计信息。
  • 基于 Web 的堆栈转储工具。
    可以右键单击问题服务器并获取 .Net 托管线程的堆栈转储。过去必须 RDC 进入系统并附加调试器,然后 1/2 得到答案。缓慢、不可扩展且乏味。不仅仅是堆栈转储,还提供了有关线程正在做什么的大量上下文。故障排除更容易,因为您可以看到数据库上有 90 个线程被阻塞,因此数据库可能已关闭。
  • Web 基础堆转储工具。
    转储所有内存分配。对开发人员非常有用。节省手工操作的时间。• 探查器。从头到尾跟踪请求并生成报告。查看 URL、方法、状态,以及所有可以帮助您识别缓慢请求的内容。查看锁争用,是否有很多异常被抛出,任何可能有趣的东西。重量很轻。它在生产中的每个 VIP(100 台服务器组)的一个盒子上运行。每 10 秒采样 1 个线程。始终在后台跟踪。

问题是:为 ASP.NET 构建基于 Web 的堆栈转储工具需要哪些工具?为方便起见,我们假设目标 AppDomain 中托管的 *.aspx 能够输出该进程中的所有托管调用堆栈就足够了。

有几篇文章介绍了Mdbg(完全用 C#/IL 编写的托管代码的调试器,开始随 CLR 2 SDK 一起提供)和通常位于 C:\Program Files\Microsoft Visual Studio 8\SDK\ 中的mdbgcore程序集的使用。 v2.0\斌:

解决方案是否会简单地引用此程序集来产生所需的输出?“列出所有托管调用堆栈”操作会对为生产流量提供服务的正在运行的进程产生什么影响?

0 投票
3 回答
1014 浏览

c# - 如何使用 MDbg 以编程方式枚举正在运行的 .NET 进程中的类型?

我想打印出正在运行的 .NET 进程中加载​​的所有不同类型的列表。我的计划是最终基于此构建一个 GUI 应用程序,因此我想通过我的代码而不是第三方工具来实现这一点。我认为我最好的选择是使用 MDbgCore 附加到正在运行的进程,然后使用 MDbgProcess.AppDomains 获取 CorAppDomain 对象,并尝试将对象模型向下走。

但是,我无法终生停止其他进程并查看任何 AppDomain。我一直在使用如下代码(我基于Mike Stall 博客中的代码)

这打印:

我尝试了各种风格的 debugger.Options.Stop*。我考虑过迭代所有方法并在所有方法上设置断点,但我也无法迭代 Modules 列表。我试过 debugger.Options.Trace,但这与使用 TraceListeners 跟踪 MDbg 的执行有关,而不是跟踪目标应用程序。

我在发布模式下运行我的 noddy 调试器应用程序,在调试模式下运行目标。我正在使用 Visual C# 2010,但我束手无策。任何人都可以对此有所了解吗?

0 投票
4 回答
4772 浏览

.net - 我在哪里可以获得 Mdbg?

我希望能够使用 Mdbg 调试 .net 代码。除了安装 Visual Studio(假设这是一种有效的获取方式)之外,还有其他获取方式吗?

0 投票
2 回答
1467 浏览

.net - .NET 4.0 是否存在 mdbg 托管调试器示例?

是否有 .NET 4.0 版本的mdbg 托管调试器源

我需要移植我的 CPU 分析器,而 ICorDebug 在 .NET 4.0 中发生了一些变化。

0 投票
2 回答
2928 浏览

c# - mdbg 无法调试我的 hello world 程序

为了试用 mdbg,我有以下简单的 hello world 程序:

用 csc /debug kkk.cs 编译它,这会产生:

然后我做(从视觉工作室命令行):

或者

我有:

0 投票
2 回答
824 浏览

.net - 使用 mdbg 附加到 w3wp

我正在尝试使用命令行托管调试器(mdbg)附加到 w3wp 进程。我无法使用“a”命令在进程列表中看到该进程。

我确信问题在于 w3wp 进程正在 LocalSystem 帐户下的另一个会话中运行,并且找不到有关如何使用 mdbg 附加到这些类型的进程的任何文档。

可能吗?

0 投票
1 回答
441 浏览

.net - 关于 CorDbg 和 Mdbg 的好资源

我正在寻找一些关于 .NET 中 CorDbg 和 Mdbg 调试器的良好信息资源,以及一些关于 MSIL(CIL) 的资料。

0 投票
1 回答
393 浏览

debugging - 由于“代码已优化”异常,无法使用 Mdbg 进行 func-eval

我们正在使用 MdbgCore.dll 来评估线程调用堆栈上参数的属性。

为此,我们正在执行 func-eval。

不幸的是,我们执行 func-eval 的所有尝试都以 CORDBG_E_ILLEGAL_IN_OPTIMIZED_CODE 失败,这似乎是由于用于 func-eval 的线程不在 GC 安全点中。

这记录在这里:http: //blogs.msdn.com/b/jmstall/archive/2005/11/15/funceval-rules.aspx

我们尝试扫描进程中的所有线程以找到处于 GC 安全点的线程,但它们似乎都将 UserState 标记为 USER_UNSAFE_POINT。

关于这个主题的文档非常稀少,我们正在努力弄清楚是否有办法在 GC 安全点中获取线程,以便我们可以进行 func-eval。我们会考虑任何允许我们使用线程确定性地闯入进程以执行 func-eval 的方法。

免责声明:我们正在尝试评估驻留在优化程序集中的类的方法,因此不确定这是否也可能导致问题。

示例代码如下:

}

Microsoft / Mdbg 团队,您能帮忙吗?

最好的,迈克

0 投票
2 回答
1348 浏览

.net - .NET 的 MDBG(托管调试器)是否可以免费用于商业目的?

我正在做一个项目。为此,我需要使用调试器。obsly MDBG 是我的首选。但是当我下载样本并阅读 eula 时。它指出

您不得将该软件用于商业软件托管服务。

但这个 eula 是为

MICROSOFT CLR 托管调试器 (MDBG) 源示例

所以我的问题是我可以使用它还是不能?