标签: windbg

使用WinDBG中的源代码行号设置断点

我知道在WinDBG中使用bp设置基于函数名的断点,bm命令有没有办法在源代码行号上设置断点中断

 <some command> 20
Run Code Online (Sandbox Code Playgroud)

意味着它应该在第20行设置断点

提前致谢

windbg

17
推荐指数
2
解决办法
2万
查看次数

错误:找不到符号文件.WINDBG.EXE

我从http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx 包下载了符号(Windows 7 RTM x86零售符号,所有语言),但它仍然给我同样的错误!

完成.发布但仍然没有工作

.sympath C:\ inetpub\wwwroot\ProductsService\bin\ProductsEntityModel.pdb; srv c:\ Symbols http://msdl.microsoft.com/download/symbols

Microsoft (R) Windows Debugger Version 6.12.0002.633 X86
Copyright (c) Microsoft Corporation. All rights reserved.


Microsoft (R) Windows Debugger Version 6.12.0002.633 X86
Copyright (c) Microsoft Corporation. All rights reserved.

CommandLine: c:\windows\system32\inetsrv\w3wp.exe -ap "DefaultAppPool" -v "v4.0" -l "webengine4.dll" -a \\.\pipe\iisipm6cb8674b-5fd5-4b1c-aac4-cd0d8af98602 -h "C:\inetpub\temp\apppools\DefaultAppPool.config" -w "" -m 0 -t 20
Symbol search path is: *** Invalid ***
****************************************************************************
* Symbol loading may be unreliable without a symbol search path.           * …
Run Code Online (Sandbox Code Playgroud)

debugging symbols windbg w3wp

17
推荐指数
1
解决办法
8万
查看次数

在Windbg中获取sizeof(类型)

我需要变量的大小,我想从Windbg命令行获取该值.编译代码并添加C++ sizeof()只是为了获得该值是困难和无用的.

从文档中我看到Windbg可以在值之后进行过滤dt /s.但是显示那个价值?

windbg

17
推荐指数
1
解决办法
5975
查看次数

使用WinDbg和ADPlus帮助捕获StackOverflowException

精简版

我想要一个ADPlus脚本,它将在第一次机会StackOverflowException上执行完全内存转储,然后清除任何内容,并忽略所有其他异常类型.

日志版本

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

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

adplus -crash -o D:\Crash -NoDumpOnFirst -iis
Run Code Online (Sandbox Code Playgroud)

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

所以使用-NoDumpOnFirst,我得到一个转储文件,WinDbg输出这些线程:

PDB symbol for mscorwks.dll not loaded
ThreadCount: 69
UnstartedThread: 0
BackgroundThread: 69
PendingThread: 0
DeadThread: 0
Hosted Runtime: no
                                      PreEmptive   GC Alloc           Lock
       ID OSID ThreadOBJ    State     GC       Context       Domain   Count APT Exception
XXXX    1  c6c 000fa758  11808221 Disabled 3b49ee4c:3b49efe8 00120888     1 Ukn (Threadpool Worker)
XXXX    2 1294 000fd258      b220 Enabled  00000000:00000000 000df4e0     0 Ukn (Finalizer)
XXXX    3 1eb0 0011cdd0    80a220 Enabled  00000000:00000000 000df4e0     0 Ukn (Threadpool …
Run Code Online (Sandbox Code Playgroud)

asp.net stack-overflow windbg adplus

16
推荐指数
1
解决办法
6130
查看次数

WPF中的win32窗口

最近我们的应用遇到了一个奇怪的问

应用程序在WPF窗口中有一个win32窗口,当调整WPF窗口大小时,问题就出现了.

堆栈跟踪:

Exception object: 0000000002ab2c78
Exception type: System.OutOfMemoryException
InnerException: <none>
StackTrace (generated):
    SP       IP       Function
    0048D94C 689FB82F PresentationCore_ni!System.Windows.Media.Composition.DUCE+Channel.SyncFlush()+0x80323f
    0048D98C 681FEE37 PresentationCore_ni!System.Windows.Media.Composition.DUCE+CompositionTarget.UpdateWindowSettings(ResourceHandle, RECT, System.Windows.Media.Color, Single, System.Windows.Media.Composition.MILWindowLayerType, System.Windows.Media.Composition.MILTransparencyFlags, Boolean, Boolean, Boolean, Int32, Channel)+0x127
    0048DA38 681FEAD1 PresentationCore_ni!System.Windows.Interop.HwndTarget.UpdateWindowSettings(Boolean, System.Nullable`1<ChannelSet>)+0x301
    0048DBC8 6820718F PresentationCore_ni!System.Windows.Interop.HwndTarget.UpdateWindowSettings(Boolean)+0x2f
    0048DBDC 68207085 PresentationCore_ni!System.Windows.Interop.HwndTarget.UpdateWindowPos(IntPtr)+0x185
    0048DC34 681FFE9F PresentationCore_ni!System.Windows.Interop.HwndTarget.HandleMessage(Int32, IntPtr, IntPtr)+0xff
    0048DC64 681FD0BA PresentationCore_ni!System.Windows.Interop.HwndSource.HwndTargetFilterMessage(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)+0x3a
    0048DC88 68C6668E WindowsBase_ni!MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)+0xbe
    0048DCD4 68C665BA WindowsBase_ni!MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object)+0x7a
    0048DCE4 68C664AA WindowsBase_ni!System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Boolean)+0x8a
    0048DD08 68C6639A WindowsBase_ni!System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Boolean, System.Delegate)+0x4a
    0048DD50 68C64504 …
Run Code Online (Sandbox Code Playgroud)

.net wpf windbg out-of-memory

16
推荐指数
1
解决办法
8220
查看次数

了解32位与64位之间的CLR对象大小

我试图了解32位和64位处理器之间的对象大小差异.假设我有一个简单的课程

class MyClass   
{  
    int x;  
    int y;  
}  
Run Code Online (Sandbox Code Playgroud)

所以在32位机器上,整数是4个字节.如果我将Syncblock添加到其中(另外4个字节),则对象大小将为12个字节.为什么显示16个字节?

0:000> !do 0x029d8b98  
Name: ConsoleApplication1.Program+MyClass  
MethodTable: 000e33b0  
EEClass: 000e149c  
Size: 16(0x10) bytes  
 (C:\MyTemp\ConsoleApplication1\ConsoleApplication1\bin\x86\Debug\ConsoleApplication1.exe)  
Fields:  
      MT    Field   Offset                 Type VT     Attr    Value Name  
71972d70  4000003        4         System.Int32  1 instance        0 x  
71972d70  4000004        8         System.Int32  1 instance        0 y  

在64位机器上,一个整数仍然是4个字节,唯一改变的是Syncblock将是8个字节(因为指针是64位机器上的8个字节).这意味着对象大小将是16个字节.为什么显示24个字节?

0:000> !do 0x00000000028f3c90  
Name: ConsoleApplication1.Program+MyClass  
MethodTable: 000007ff00043af8  
EEClass: 000007ff00182408  
Size: 24(0x18) bytes  
 (C:\MyTemp\ConsoleApplication1\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe)  
Fields:  
              MT    Field   Offset                 Type VT     Attr            Value Name  
000007fef4edd998  4000003        8         System.Int32  1 instance                0 x  
000007fef4edd998 …

.net windbg sos

16
推荐指数
2
解决办法
2787
查看次数

使用WinDbg将托管字节[]的内容写入文件

我有一个来自生产服务器的崩溃转储,显示OutOfMemoryException.例外本身与此无关.

我碰巧运行了一个!dso来查看堆栈对象:

0:042> !dso
OS Thread Id: 0x1014 (42)
ESP/REG  Object   Name
246eeb24 109a21bc System.UnhandledExceptionEventHandler
246eeb2c 39083998 System.Runtime.Remoting.Proxies.__TransparentProxy
246eeb34 39083b5c System.UnhandledExceptionEventArgs
246eeb48 39073280 System.Byte[]
246eec10 2e720050 System.OutOfMemoryException
[snip]
246ef250 0ac1c4d0 System.IO.MemoryStream <-- interesting
Run Code Online (Sandbox Code Playgroud)

我以为MemoryStream可能与错误有关,所以我把它丢弃了:

0:042> !do 0ac1c4d0 
Name: System.IO.MemoryStream
MethodTable: 7932d5e4
EEClass: 790ec318
Size: 52(0x34) bytes
 (C:\WINDOWS\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll)
Fields:
      MT    Field   Offset                 Type VT     Attr    Value Name
7933061c  400018a        4        System.Object  0 instance 00000000 __identity
7992cbcc  4001b6c        8 ...ream+ReadDelegate  0 instance 00000000 _readDelegate
7992cc58  4001b6d        c ...eam+WriteDelegate  0 instance 00000000 _writeDelegate …
Run Code Online (Sandbox Code Playgroud)

windbg sos

16
推荐指数
1
解决办法
6583
查看次数

如何编写将崩溃并生成转储文件的示例代码?

我开始学习windbg并找到了这篇好文章 如何使用WinDbg来分析VC++应用程序的崩溃转储?

现在我想按照说明一步一步地做.这是问题所在:我需要编写一些可以立即崩溃的示例代码,并创建一些可以由windbg使用的转储文件.

怎么写这样的代码?

void Example4()
{
    int* i = NULL;
    *i = 80;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码会立即崩溃; 但是,我不知道在哪里可以找到转储文件?

谢谢

c++ windbg visual-c++

16
推荐指数
1
解决办法
2万
查看次数

强制WinDbg加载卸载模块的符号

我正在调试一个模块,我只有.exe和没有私有符号的.pdb.
在调试会话期间,我需要检查内部结构.显然这个结构不会出现在PDB中,因为它是私有的 - 但幸运的是我有一个.h文件,其中定义了这个结构.因此,我可以构建一些使用此结构的虚拟模块,并获取包含此结构的PDB文件.

现在我有一个带有struct符号的卸载模块,我想加载它的符号,以便为该结构转换一些内存.(当然没有卸载原始的.exe我正在调试)
问题:似乎WinDbg只允许为加载的模块加载符号......

我的问题是:有没有一种简单的方法可以从卸载的模块加载我的符号?

我试过.reload /i /f MyDll.dll但我总是得到...MyDll.dll - unmatched.
设置同情并没有帮助.

有任何想法吗?

windbg

16
推荐指数
2
解决办法
2万
查看次数

限制!dumpheap(windbg)输出到n个对象

使用windbg和running!dumpheap命令查看对象的地址时,如何限制特定数量的对象.我发现的唯一方法是在博客上使用CTRL + BREAK和命令行http://dotnetdebug.ne​​t/2005/07/04/dumpheap-parameters-and-some-general-information-on-sos-help-system /

-l X - 仅打印每个堆中的X个项而不是所有对象.

显然-l不再存在于SOS.dll中

windbg

15
推荐指数
2
解决办法
1万
查看次数

标签 统计

windbg ×10

.net ×2

sos ×2

adplus ×1

asp.net ×1

c++ ×1

debugging ×1

out-of-memory ×1

stack-overflow ×1

symbols ×1

visual-c++ ×1

w3wp ×1

wpf ×1