调试在64位环境中运行的32位应用程序
我有一个32位.NET 4.0应用程序在WOW64环境中运行的64位机器. 该应用程序遇到了一个错误,我在C:\ Windows \ syswow64 \ taskmgr.exe 中遇到了一个带有32位TaskManager的转储. 我使用32位Windebugger来分析此垃圾场.我加载了以下dll. 1).loadby sos clr 2).load mscordacwks(来自客户端计算机). 但我仍然无法使用!clrstack,!threads等的SOS命令. 我有错误: 无法加载数据访问DLL,0x80004005 我做错了什么? 解决方案 似乎MSCORDACWKS未正确加载 一种方式 尝试: .cordll -u -ve -lp 正确的输出应为: CLRDLL: Loade
30 2024-04-25
编程技术问答社区
用windbg调试.NET OutOfMemoryException
我需要帮助来调试.NET DLL中的OutofMemoryException,该DLL将RTF文本转换为RAW文本或HTML中的RTF文本. 这是用于转换的代码,( http://matthewmanela.com/blog/converting-rtf-to-html/) public string ConvertRtfToHtml(string rtfText) { if (rtfText.Equals("")) return ""; try { var thread = new Thread(ConvertRtfInSTAThread); var threadData = new ConvertRtfThreadData { RtfText = rtfText }; thread.SetApartmentState(ApartmentState.STA); thread.Start(
6 2024-04-23
编程技术问答社区
计算对象的大小,使其包括所有子对象和(子孙链)的大小
假设A类包含B和C的实例.B包含D,E和F,而C包含G,H和I的实例.因此,当计算A的大小时,我想包括所有的大小及其子弹.当我使用!Dumpheap -Stats命令时,A的大小似乎不包括所有包含的孩子,孙子,孙子的孩子. 有什么办法可以在WindBG中以这种方式获得A的大小? 解决方案 我认为 !objsize 是您要寻找的. 但是,它仅适用于单个对象(!dumpheap -stat总结所有对象,但不包含在内).如果您想为该类型的所有对象执行此操作,则需要!dumpheap -short -type和一个循环. 解决 Marc Sherman : 根据文档!objsize获得了父母及其子女的大小,它没有提及孙子及以后:" objsize命令还包括除父母外的所有子对象的大小." !dumpheap不考虑孩子: 0:006> !dumpheap -mt 02b24dfc Address MT
14 2024-04-22
编程技术问答社区
未能找到运行时clr.dll以使用sos
我有简单的控制台应用程序(目标框架4.5.2): using System; public class SosTest { public class Foo { public Foo() { Console.WriteLine("Creation of foo"); } } static void Main(string[] args) { var n1 = new Foo(); var n2 = new Foo(); Console.WriteLine("Allocated objects"); Console.WriteLine("Press any key to invoke GC"); Console.ReadKey(); n2 = n1; n1 =
22 2024-04-22
编程技术问答社区
使用windbg检测挂起的C#应用程序中的死锁
使用ThreadPool在C#2.0中使用ThreadPool每隔几周左右悬挂的多线程应用程序. 我做了一个syncblk !syncblk Index SyncBlock MonitorHeld Recursion Owning Thread Info SyncBlock Owner 201 05b9493c 979 1 05bc1040 bcc 45 022f3490 System.Collections.ArrayList 2875 05b4c914 1 1 17b99e10 1af8 290 024862d8 MyProg.MyChildClass 3045 05b4dbec 1 1 17ca7e98 1990 664 02392120 MyProg.MyChildClass 3046 05b4dc1c
12 2024-04-22
编程技术问答社区
学习windbg的特点和好处的最好资源是什么?
学习WINDBG的功能和好处的最佳资源是什么?我希望能够讨论研究内存问题(手柄,对象),性能问题等. . . 解决方案 这些是我喜欢的: Maoni的博客(最近没有更新,但包含许多有用的材料) Tess Fernandez 有很多信息,请查看Windbg的windbg查看她的视频,从Barcellona的Teched.她还有一篇文章,名为" Learning .net .net .net debugging "这肯定会有所帮助.我建议您订阅此博客,这是充满有关调试的新信息. wintellect的John Robbins 有一本关于MSDN杂志的专栏a href =" http://msdn.microsoft.com/en-us/magazine/magazine/cc163322.aspx" rel =" noreferrer"> bugslayer 所以请检查一下,然后全部查看他的书调试Microsoft .net 2.0应用程序 入门第1部分和第2部分 其
8 2024-04-21
编程技术问答社区
如何解决Windbg上显示的这个错误?
我已经加了一个.exe,它给出了此错误: Microsoft (R) Windows Debugger Version 6.12.0002.633 X86 Copyright (c) Microsoft Corporation. All rights reserved. CommandLine: "C:\Users\Public\SoundLog\Code\Código Python\SoundLog\dist\SoundLog.exe" Symbol search path is: *** Invalid *** **************************************************************************** * Symbol loading may be unreliable without a symbol search path. * * Use .symfix to have the debug
6 2024-04-20
编程技术问答社区
请解释一下!"SyncBlk "的windbg命令
首先,是否有一个命令可以在windbg>? 中获得每个SOS命令的帮助和参数 其次,我想了解!syncblk输出 Index SyncBlock MonitorHeld Recursion Owning Thread Info SyncBlock Owner 201 05b9493c 979 1 05bc1040 bcc 45 022f3490 System.Collections.ArrayList 2875 05b4c914 1 1 17b99e10 1af8 290 024862d8 MyClass 2945 05b4b66c 1 1 17d1a290 12c0 752 02482940 MyClass MonitorHeld显示了由synblk持有的监视器编号. 1用于写作和2用于阅读,但是列的其余部分意味着什么? 说我
12 2024-04-20
编程技术问答社区
使用SOS的Windbg,如何转储一个c#结构
如何使用windbg倾倒结构,是否有类似于dumpObject的dumpstruct命令?还是可以倒入垃圾箱结构? 解决方案 是的,您可以使用!dumpvc命令. 由于structs没有对象标头,因此调试器不知道其类型,因此您必须将其传递给结构的MethodTable地址. >!DumpVC
14 2024-04-19
编程技术问答社区
当从C#引用64bit dll时,应用程序退出(无异常)。
我 commine lzo2.dll 64 bit 现在希望在C#程序中使用它: 我正在使用以下类来测试(类似的代码适用于32bit lzo.dll): [DllImport("lzo2.dll")] private static extern string lzo_version_string(); static void Main(string[] args) { try { if (Environment.Is64BitProcess) { Console.WriteLine(lzo_version_string());//application exits here, no exceptions caught } } catch (Exception e) { Console.WriteLine(e);
14 2024-04-19
编程技术问答社区
使用windbg调试一个.NET转储程序
我做了一个.NET进程中的转储(使用-ma选项和一个高CPU的触发器),我想在运行线程中查看有关我的代码正在执行的操作的线索.我明白了: *** procdump -ma -c 65 -s 2 -n 3 service.exe *** Process exceeded 65% CPU for 2 seconds. Thread consuming CPU: 4396 (0x112c)' 指示的线程在转储时间执行: 0:022> k ChildEBP RetAddr WARNING: Frame IP not in any known module. Following frames may be wrong. 0990f104 040666ab 0x40656f8 0990f124 04066465 0x40666ab 0990f14c 040655e2 0x4066465 0990f160 040651f4 0x40655e2 0990f178 04065032
12 2024-04-18
编程技术问答社区
SOS不支持当前的目标架构
我正在尝试使用windbg研究为我们的x86工艺创建的悬挂式转储文件.这是一个4.0 x86的应用程序,所以要获得一个非托管的堆栈,我必须执行以下操作: .loadby sos clr .load wow64exts !sw kL 但是,每次我尝试通过!clrstack获得托管堆栈时,我都会在标题中获得错误.我想念什么? 解决方案 我相信您将必须使用位于C:\ Windows \ syswow64 \ taskmgr.exe中的32位任务管理器才能获得32位转储. 更多信息在这里: http://blogs.msdn.com/b/tess/archive/2010/09/29/capturing-memory-dumps-for-32-bit-bit-bit-processes-processes-on-an-x64 -machine.aspx 其他解决方案 正如其他人已经说过的,这可能是由64位应用程序(例如默认任务管理器)引起的,创建一个32位进程的转
22 2024-04-17
编程技术问答社区
调试winform崩溃-C#[ADPlus + Windbg]
System.AccessViolationException was unhandled Message=Attempted to read or write protected memory. This is often an indication that other memory is corrupt. Source=System.Windows.Forms StackTrace: at System.Windows.Forms.UnsafeNativeMethods.PeekMessage(MSG& msg, HandleRef hwnd, Int32 msgMin, Int32 msgMax, Int32 remove) at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponent
18 2024-04-16
编程技术问答社区
用于Microsoft.NET.CoreRuntime的SOS调试扩展程序
在尝试使用WindBG的UWP C#/XAML商店项目中追踪致命的无效指针异常(C000027B)时,由于Microsoft.net.net.corerruntime缺少SOS调试扩展,我无法获得CLR异常对象.我无法找到匹配的sos.dll.我想念什么? 注意:应用程序崩溃是可重现的,但只有在不调试时才发生.因此,在这种情况下,在Visual Studio调试器下运行该项目不是解决方案. [...] 0:009> dt -a6 000001c37c6587e0 combase!PSTOWED_EXCEPTION_INFORMATION_V2 [0] @ 000001c3`7c6587e0 --------------------------------------------- 0x000001c3`7a8c8348 +0x000 Header : _STOWED_EXCEPTION_INFORMATION_HEADER +0x008 R
6 2024-04-16
编程技术问答社区
diassemble托管代码问题
我使用windbg的windbg使用windbg使用windbg的!U命令来使用windbg来托管托管代码(在C#,Console应用程序中编写).我发现,当使用!U进行托管函数时,diassmbled IL代码仅包含我制作的函数调用,以及剩下的零件(非功能调用C#代码),例如a=a*2> a=a*2和foreach loops in C# ,仅显示本机汇编语言代码,是正确的预期行为吗? 我的问题是,我想知道!u是否能够使用所有代码托管托管代码二进制dll(除了函数呼叫代码)? ? 预先感谢 乔治 解决方案 如果要在调试时倾倒IL,则可以使用SOS的!dumpil命令.它将MethodDESC指针作为输入,因此您必须先获得该指针. 获取MethodDesc指针的一种方法使用!name2ee命令. 例如 0:000> !name2ee ClassLibrary1!ClassLibrary1.Bar.Foo Module: 001630bc (ClassLib
10 2024-04-16
编程技术问答社区
.NET线程怎么可能在一个不属于任何线程的syncblk上等待?
我的应用程序中有一个崩溃转储,显示了一堆线程在Syncblk上等待的线程,而Syncblk则表明它没有拥有线程.怎么可能?我正在尝试在测试应用中重现症状,但我无法弄清楚可能会产生该结果的情况....让所有线程退出或死亡而无需释放Syncblk仍然显示为拥有该对象,只是螺纹是" xxx"....我已经使用PINVOKE进行了完全管理的优美出口和硬线终止进行了测试....我测试了一堆不同的等待的组合,没有脉冲,不匹配的Enter and Exits ...没有什么能产生一个syncblk,它可以阻止线程并显示没有所有者.....我用完了想法 这是我正在尝试复制的crastdump的输出:(注意索引#1236) 0:000> !syncblk Index SyncBlock MonitorHeld Recursion Owning Thread Info SyncBlock Owner 784 0000000004f12eb0
14 2024-04-15
编程技术问答社区
用Windbg'的!clrstack命令调试死锁
当我发出clrstack命令时,我会收到以下输出.它是一个拥有僵局并导致死锁的封锁线的呼叫站.这是确切的目的吗?它是否有其他目的(没有任何参数).我在哪里可以获取更多信息? !clrstack OS Thread Id: 0x1b2c (6956) ESP EIP 0012f370 7c90e514 [HelperMethodFrame: 0012f370] System.Threading.Thread.SleepInternal(Int32) 0012f3c4 79299275 System.Threading.Thread.Sleep(Int32) 0012f3c8 00e0030f testlock.LockTest.Test() 0012f420 00e00146 testlock.Program.Main(System.String[]) 0012f69c 79e71b4c [GCFrame: 0012f69c] 解决方案 clrsta
30 2024-04-15
编程技术问答社区
如何用WinDBG列出所有管理线程的调用栈?
我有一个由托管应用程序创建的转储.我正在使用SOS/SOSEX范围来简化转储分析.我想列出所有托管线程的呼叫堆栈,就像我们在本机应用程序中所做的那样.我们该怎么做? 解决方案 使用 sos 命令: 0:007> .load sos 0:007> !EEStack 请参阅 sos.dll(sos debugging扩展) 其他解决方案 此命令将转储所有托管线程 ~*e!dumpstack 其他解决方案 使用sosex,使用〜 * e!mk(〜- thread, * - all,e-执行此命令,!mk-显示托管堆栈.sosex irriper中的大多数命令the Native命令,但M(托管)在他们面前.
26 2024-04-14
编程技术问答社区
调试C#代码时的符号问题
我正在使用但Windbg总是从一个奇怪的文件夹中找到符号.这是一个示例(当我从使用!symysy时): SYMSRV: c:\MySymbols\FooService.pdb\4311207E2E2D442CB7473828D2488F941\FooService.pdb not found 我的应用程序称为FooService.exe,相关的PDB文件命名为FooService.pdb.我将C:\MySymbols设置为符号路径,并将FooService.pdb复制到目录C:\MySymbols.但是,为什么windbg在C:\MySymbols中找不到FooService.pdb,而是从一个奇怪的子文件夹中找到," fooservice.pdb \ 4311207E2E2E2D442CB74747382824888548F941"? 在我的情况下,为了加载PDB符号文件,最好的解决方案是什么(我必须手动创建子折线FooService.pdb\4311207E2E2D
12 2024-04-14
编程技术问答社区
由sosex.mbp或sosex.mbm设置的断点不起作用
我正在使用vs.net2010.我编译了一个非常简单的.NET 4.0应用程序. using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TestWindbg { class Program { static void Main(string[] args) { Console.ReadLine(); Func1(); } static void Func1() { int i = 0; int j = i + 2; Console.WriteLine(j); } } } 我打开WindBG 6.12.0
14 2024-04-13
编程技术问答社区