草庐IT

c# - WinDbg/SOS : Explanation of ! SyncBlk 输出

我正在寻找SOS的!SyncBlk命令生成的输出的描述。特别是我在“MonitorHeld”列上找不到有用的解释。此列显示一系列故障转储中的高值。例子:0:000>!SyncBlkIndexSyncBlockMonitorHeldRecursionOwningThreadInfoSyncBlockOwner440000000005a5c22811000000000e7a67402304273000000019f858cd0System.Object48000000000579bae811000000000e7a72e02370275000000015f999900System.Obje

c++ - windbg 和 VS 找不到我的 pdb 文件

我有一个使用SCons和MSVS2013(express)编译器(从命令行编译)构建的项目。它编译并运行,但是,它会定期崩溃,所以我想调试它。我添加了以下标志:/Zi#Debugsymbols/DEBUG#Debugsymbols/FS#Concurrentdebugdatabasefileaccess构建后,我看到生成了一个名为vc120.pdb的pdb文件。我的可执行文件位于build文件夹中,pdb文件位于主项目目录中。但是,当我尝试附加我的可执行文件以通过VS2013或WinDbg进行调试时,我总是收到无法找到调试符号的错误。我在VS2013和WinDbg中都将“路径”添加到p

c++ - 调用 `cdb.exe` (windbg) 以非交互方式运行,并在崩溃时产生回溯?

我有一个与travis-ci一起使用的C++项目。现在,我使用boost.build构建它,在travis上,当我运行单元测试时,我通过gdb来构建它。,这样我就可以在发生崩溃时得到回溯。制作gdb以非交互方式执行此操作,我在命令行上这样调用它:gdb-return-child-result-batch-ex"run"-ex"threadapplyallbt"-ex"quit"--args./${file}哪里${file}是我的可执行文件。这告诉它:开始流程申请bt到所有线程,它会在发生崩溃时发出回溯,如果没有崩溃则什么也不做。最终导致gdb退出,并使用child的退出代码退出。现在

c++ - WinDbg !heap 命令由于缺少符号而无法正常工作

我正在尝试使用WinDbg调试我的具有C++非托管内存分配的.NET应用程序。当我尝试运行!heap命令时,我收到以下错误消息:0:022>!heap***ERROR:Symbolfilecouldnotbefound.DefaultedtoexportsymbolsforC:\Windows\system32\KERNEL32.dll-****************************************************************************************Yourdebuggerisnotusingthecorrectsymbol

c# - 如何解决 Windbg 上显示的这个错误?

我已经加载了一个.exe,但出现了这个错误:Microsoft(R)WindowsDebuggerVersion6.12.0002.633X86Copyright(c)MicrosoftCorporation.Allrightsreserved.CommandLine:"C:\Users\Public\SoundLog\Code\CódigoPython\SoundLog\dist\SoundLog.exe"Symbolsearchpathis:***Invalid*************************************************************

c++ - wchar_t 和 char 在 WinDbg 中的表示

注意:/**Trivialcode*/wchar_t*greeting=L"HelloWorld!";char*greeting_="HelloWorld!";WinDbg:0:000>??greetingwchar_t*0x00415810"HelloWorld!"0:000>??greeting_char*0x00415800"HelloWorld!"0:000>db0x004158000041580048656c6c6f20576f-726c642100000000HelloWorld!....00415810480065006c006c00-6f00200057006f00H.

c++ - WinDbg 中的_invoke_watson 是什么?

当我使用WinDbg分析我们的问题时,我发现了跟踪“AKC!_invoke_watson”。你能帮我解释一下什么是“_invoke_watson”吗?以及如何根据此痕迹知道AKC应用程序的根本原因是什么?DEFAULT_BUCKET_ID:NULL_POINTER_READ_IN_CALLLAST_CONTROL_TRANSFER:from00007ff713fe047eto00007ff713fe03f4STACK_TEXT:00000000`0274efe000007ff7`13fe047e:00000000`024a36d800000000`ce9f27b400000000`02

c++ - WinDbg 是否能够检测到由于无效向下转换而导致的内存堆损坏?

这是我刚刚发现的错误!万岁。该错误是由于不正确的向下转换引起的,实际上我正在使用static_cast而不是dynamic_cast.我的应用程序非常大并且是多线程的并且与其他应用程序交互。所以调试非常困难。我试过使用WinDbg,GFlags,和ApplicationVerifier没有结果。当然是因为我不知道如何使用这些工具。是否有可能通过使用WinDbg等工具找到由于无效向下转换而导致的内存堆损坏?如果是,如何? 最佳答案 Windbg!heap–s–v命令可以揭示损坏的堆0:008>!heap-s-vHeapFlagsRes

c++ - 在 Windbg 中,如何在调试时列出枚举的值?

通常,enum值是简单的编译器增量值或直接设置为整型文字,因此可以通过查看源文件轻松推导出或直接看到这些值。但是,有时enum值用于将类内常量设置为等于在别处定义的值或不容易复制的编译时表达式的结果。有没有办法让Windbg向我显示每个enum成员在那些更棘手的情况下的实际值? 最佳答案 考虑这个小结构:structfoo{enumenum1{enum1_val1_=5,enum1_val2_,};enumenum2{enum2_val1_=0x0001,enum2_val2_=0x0010,};enum{//assumethese

WinDbg学习三(字符串通配符语法)

说明星号(*)代表零个或多个字符。问号(?)代表任意单个字符。包含字符列表的方括号([])代表列表中的任何单个字符。恰好匹配列表中的一个字符。在这些括号内,您可以使用连字符(-)指定范围。例如,Prog[er-t7]am匹配“Progeam”、“Program”、“Progsam”、“Progtam”和“Prog7am”。数字符号(#)代表零个或多个前面的字符。例如,Lo#p匹配“Lp”、“Lop”、“Loop”、“Looop”等。您还可以将数字符号与括号组合起来,因此m[ia]#n匹配"mn","min","man","maan","main","mian","miin","miain",等