问题标签 [windbg]

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 投票
1 回答
398 浏览

visual-studio - 没有提升的 Visual Studio 集成 Web 服务器错误

我在 Windows Vista 中运行的 Visual Studio 中有 asp.net 项目,并在标准用户(未提升)中激活了 UAC。

当我尝试在 Visual Studio Web Server 中运行我的 asp.net 项目时,该进程挂起并开始使用如此多的 CPU。如果我运行 Visual Studio 提升它的工作完美。

这是该过程正在执行的操作。似乎它正在尝试访问“Global.net clr network”,但它不起作用。

0:000> !clrstack OS 线程 ID:0xcec (0) ESP EIP
0021f09c 6dd09742 [NDirectMethodFrameGeneric: 0021f09c] Microsoft.Win32.NativeMethods.CreateFileMapping(IntPtr, SECURITY_ATTRIBUTES, Int32, Int32, Int32, System.Stringtics) 0021f0bc 0021f0bc abno .SharedPerformanceCounter+FileMapping.Initialize(System.String, Int32, Int32) 0021f11c 56a02a30 System.Diagnostics.SharedPerformanceCounter+FileMapping..ctor(System.String, Int32, Int32) 0021f12c 56a05af7 System.Diagnostics.SharedPerformanceCounter.GetCategoryData() 0021f17c 56a056b8 System.Diagnostics.SharedPerformanceCounter..ctor(System.String, System.String, System.String, System.Diagnostics.PerformanceCounterInstanceLifetime) 0021 56a0456c System.Diagnostics.PerformanceCounter.Initialize() 0021f1d0 56a0437f System.Diagnostics.PerformanceCounter.set_RawValue(Int64) 0021f1ec 569ca4d3 System.Net.NetworkingPerfCounters.Initialize() 0021f230 569c980.Section.Net.Configuration( Configuration.SettingsSection) 0021f270 569e3201 System.Net.Configuration.SettingsSectionInternal.get_Section() 0021f29c 569e2aad System.Net.Sockets.Socket.InitializeSockets() 0021f2ec 569e24e8 System.Net.Sockets.Socket..ctor(System.Net.Sockets.AddressFamily , System.Net.Sockets。SocketType, System.Net.Sockets.ProtocolType) 0021f310 00370758 Microsoft.VisualStudio.WebHost.Server.Start() 0021f33c 0037037b Microsoft.VisualStudio.WebServer.WebServerApp.Main(System.String[]) 0021f594 6dce1b4c [GCFrame: 0021f594] 0: 000> !finalizequeue 要清理的同步块:0 要释放的 MTA 接口:0

即将发布的STA接口:0

第 0 代有 104256 个可终结对象 (045e06fc->046463fc) 第 1 代有 1 个可终结对象 (045e06f8->045e06fc) 第 2 代有 22 个可终结对象 (045e06a0->045e06f8) 准备终结 0 对象 (046463fc->046463fc) 统计:MT计数 TotalSize 类名称 573bd7cc 1 20 Microsoft.Win32.SafeHandles.SafeFileHandle 56a4a3f0 1 20 Microsoft.Win32.SafeHandles.SafeLocalMemHandle 57395c34 1 44 System.Threading.ReaderWriterLock 573b8e74 1 56 System.Threading.Thread 56a3e224 1 76 System.Socket. 56a49d30 1 120 System.Diagnostics.PerformanceCounter 57395bdc 8 128 System.WeakReference 57397ba0 8 160 Microsoft.Win32.SafeHandles.SafeRegistryHandle 56a4a448 104257 2085140 Microsoft.Win32.SafeHandles.SafeFileMappingHandle 共 104279 个对象

0 投票
3 回答
2081 浏览

windbg - 如何确定哪些是来自 WinDBG 的前台 .NET 线程?

如何确定哪些是来自 WinDBG 的前台 .NET 线程?使用 !threads 命令,SOS 扩展告诉我们前台线程的数量,但不告诉我们是哪些。

0 投票
2 回答
3428 浏览

exception - windbg 命令“kd”有什么作用?

我错误地运行了 kd 并得到了一些让我感兴趣的输出,这是对我模块中的一行代码的引用,我在任何线程的调用堆栈上都看不到。这些行不是方法的开始,所以我不认为引用是对函数指针的引用,但可能是异常存储在内存中的结果???当然,这恰好是我正在寻找的......

更新:

异常的堆栈跟踪是:

并进入我们的代码(创建一个新的 Form 派生类)

dds 输出:

ETC

这似乎表明 Initialize 正在被调用,即使它不在此异常或任何线程的堆栈跟踪中。正如建议的那样,这可能都是 pdbs 和 dll 之间的不匹配,但我们最终使用正确的类和方法似乎是一个巧合

0 投票
2 回答
6426 浏览

asp.net - 使用 WinDbg 和 ADPlus 帮助捕获 StackOverflowException

简洁版本

我想要一个 ADPlus 脚本,它会在第一次出现 StackOverflowException 时执行完整的内存转储,然后再清理任何内容,并忽略所有其他异常类型。

日志版本

在发布新的 ASP.NET 代码后,我们开始出现间歇性 StackOverflowExceptions。我们已经在自上次已知良好安装后添加的修订版中寻找无限递归和所有常见的嫌疑人,但找不到任何东西。该网站将运行长达一个小时,然后崩溃。

我们使用了 WinDbg 和 SOS 并尝试使用 ADPlus 获取崩溃日志,使用以下命令:

-NoDumpOnFirst 的原因是我们只能在繁忙的服务器上在生产中重现此错误。为了对每个第一次机会异常(嘿,它发生)进行小型转储,调试器必须暂停 IIS 工作进程足够长的时间以写出 16 meg 文件,因此请求排队并且应用程序变得不稳定。因为错误可能需要长达一个小时才能抬起它丑陋的脑袋,所以这是有问题的。

因此,使用 -NoDumpOnFirst,我得到了一个转储文件,WinDbg 输出这些线程用于:

尝试打印异常表明没有堆栈跟踪,并且其他方法抱怨它是非托管代码。我的猜测是,由于转储是在进程死亡时创建的,因此所有线程都已被垃圾收集,并且没有信息可以获取。

我真的很想让调试器在 StackOverflowException 的第一次机会上执行完全转储并忽略所有其他异常类型。我知道 ADPlus 可以使用配置文件 - http://msdn.microsoft.com/en-us/library/cc409304.aspx - 但格式对我来说都是希腊语。谁能告诉我如何制作一个可以做到这一点的 ADPlus 脚本?

...当然,如果您查看上面的线程列表并且您确切地知道出了什么问题,或者如果我给您更多信息就可以弄清楚,您也可以告诉我。

解决尝试 1

谢谢 deemok 的回答,虽然不太正确,但这将我推向了正确的方向。Stack Overflow 的异常代码不正确(它是 sbo 不是 sov),(或者我当时认为,请参阅下面的 deemok 编辑)所以我尝试使用以下配置进行调试:

并使用以下命令:

我验证了输出的日志文件指示了正确的配置。诀窍是 adplus 的命令行参数按顺序执行,因此如果您从捕获第一次机会异常的配置开始,然后应用 -NoDumpOnFirst,则配置设置将被覆盖。如果最后使用 -c 应用配置,则其设置将胜出。

然而,最后,堆栈溢出被证明是无法捕获的。发生堆栈溢出,无法接收内存转储,然后在第二次机会进程结束事件上发生转储,再次所有内容都被垃圾收集,我无法获得任何有用的信息。

我试图短路进程结束异常,以防它参与并覆盖堆栈溢出,但随后发生了异常,我只是没有内存转储。

幸运的是,我通过检查代码偶然发现了答案。当然,这是一个循环方法调用的例子。

实际分辨率

这个问题早就解决了,但我很快就制作了一个会导致堆栈溢出的 ASP.NET 页面。(毕竟这并不难)并在下面尝试了 Axl 的回应。

XML 有点偏离 - Axl 只是忘记关闭</ADPlus>标签(或者可能在复制粘贴中丢失了它),但这很容易修复,adplus 很友好地告诉我到底出了什么问题。

我将该脚本设置为针对我的测试堆栈溢出引发程序,将结果加载到 windbg 中,当我调用 !clrstack 时,我得到了一个非常清晰(而且很长)的循环调用彼此的方法列表。这一下子就发现问题了!下次堆栈溢出来敲我的门时,我会保留此页面的书签。

0 投票
2 回答
7105 浏览

c# - 如何在 WinDBG 中查看托管异常详细信息?

VS2005 C# 编译器在我们团队的夜间构建过程中崩溃。我用 WinDBG 附加到它,加载 SOS 扩展,打印调用堆栈,但看不到异常信息。

我试过了!PrintException,如下:

这是调用堆栈的顶部:

0 投票
1 回答
791 浏览

debugging - 如何获取 VBScript 和 ASP 符号文件

许多 Windows 系统文件可通过下载页面或 http 路径从 Microsoft 获得。我的 WinDbg 找不到 VBScript.dll 和 ASP.dll 的符号文件,而且我似乎无法在 Internet 上找到它们。服务器上的 VBScript.dll 为 5.6.0.8835,ASP.dll 为 6.0.3790.4195。两者的文件日期都比此处下载的符号文件更早。

0 投票
2 回答
7725 浏览

windows - windbg 转储命令失败,错误 0x8007012b

客户正试图捕获挂起的小型转储。他启动 WindDbg 并成功附加到该过程。WinDbg 显示其标题:

并枚举加载的模块。

他输入转储命令:

它报告:

错误 0x299 是:由于文件系统限制,请求的操作无法完成

任何想法这意味着什么或如何诊断?

0 投票
4 回答
774 浏览

c# - 我正在寻找指向 cdb/windbg + .net 文档的链接

我刚开始使用 cdb,我喜欢它!

我找到了一些关于使用 cdb 的有趣文章并将其添加到书签,但我很想看看其他人的资源。

您使用哪些站点从 cdb (windbg) 中提取最大实用性

0 投票
1 回答
5576 浏览

.net - 我的堆是碎片化的吗

我一直在阅读有关固定和碎片的信息。考虑到大量的可用空间,它在我看来是支离破碎的。我想我现在必须追查它。

想法?回馈?

0 投票
2 回答
4053 浏览

c++ - 由于后期构建步骤,未加载本机 dll 的符号 (pdb)

我有一个用符号构建的本机发布 dll。有一个后期构建步骤可以修改 dll。后期构建步骤会进行一些压缩,并且可能会附加一些数据。pdb 文件仍然有效,但是 WinDbg 和 Visual Studio 2008 都不会在构建后步骤之后加载 dll 的符号。我们需要修改 pdb 文件或 dll 中的哪些位,以使 WinDbg 或 Visual Studio 在加载引用了我们的发布 dll 的转储时加载符号?

文件大小重要吗?校验和或哈希?时间戳?

修改转储?或修改pdb?发货前修改dll?

(我们知道 pdb 是有效的,因为我们能够使用它来手动获取引用已发布 dll 的转储调用堆栈中地址的符号名称。*ss 对调用堆栈中的每个地址手动执行它只是一个完全的痛苦所有线程。)