首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用DebugDiag在托管代码中设置断点

使用DebugDiag在托管代码中设置断点
EN

Stack Overflow用户
提问于 2015-12-10 02:29:39
回答 1查看 495关注 0票数 0

每次调用特定的方法时,我都会尝试使用Debug Diagnostic Tool来创建Minidump。

我从简单的控制台应用开始:

代码语言:javascript
复制
namespace FastFailApp {
    class Program {
        static void Main(string[] args) {
            Console.WriteLine("Starting...");
            for (int i = 0; i < 20; i++) {
                Console.Write(".");
                Thread.Sleep(1000);
            }
            Environment.FailFast("Not so unexpected failure...");
        }
    }
}

然后,我在DebugDiag中创建了规则,以便在每次Program.Main调用时创建小型转储:

不幸的是,它没有工作,在DebugDiag日志中,我得到了这样的信息:

代码语言:javascript
复制
[12/9/2015 8:05:15 PM] Attempting to set managed breakpoint at FailFastApp.dll!FailFastApp.Program.Main
[12/9/2015 8:05:15 PM] bpID = -2
[12/9/2015 8:05:15 PM] Current Breakpoint List(BL)
SYMSRV:  https://msdl.microsoft.com/download/symbols/kernel32.pdb/996C94DB18DE43688CA110D2FF25B8542/kernel32.pdb not found
SYMSRV:  C:\Program Files\DebugDiag\sym\kernel32.pdb\996C94DB18DE43688CA110D2FF25B8542\kernel32.pdb not found
DBGHELP: C:\Windows\system32\kernel32.pdb - file not found
DBGHELP: kernel32.pdb - file not found
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\Windows\system32\KERNEL32.dll - 
DBGHELP: KERNEL32 - export symbols
SYMSRV:  https://msdl.microsoft.com/download/symbols/ntdll.pdb/6048FDB62DCD41C18835594844CE71432/ntdll.pdb not found
SYMSRV:  C:\Program Files\DebugDiag\sym\ntdll.pdb\6048FDB62DCD41C18835594844CE71432\ntdll.pdb not found
DBGHELP: C:\Windows\SYSTEM32\ntdll.pdb - file not found
DBGHELP: ntdll.pdb - file not found
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\Windows\SYSTEM32\ntdll.dll - 
DBGHELP: ntdll - export symbols
[12/9/2015 8:05:15 PM] Thread exited. Exiting thread system id - System ID: 3568. Exit code - 0x00000000
CLR: Managed code called FailFast, saying "Not so unexpected failure..."

我已经在DebugDiag中设置了符号服务器,并且我用WinDBG检查了这个配置:

有人有什么建议吗?

PS。我尝试调试的应用程序是64位的。我尝试将当前进程目录(带有pdb文件)添加到符号路径中,并使用了各种格式的断点表达式(如Module!Class::MethodModule.dll!Class.Method(OtherType)),但均未成功。

EN

回答 1

Stack Overflow用户

发布于 2015-12-10 12:46:23

不是应该是FailFastApp.exe吗?FailFastApp.Program.Main?不确定是否已将代码放在类库中并将其编译为动态链接库,但如果未这样做,则它应该是.exe

如果这不起作用,那么看看您是否可以通过使用这个断点获得睡眠方法上的转储

代码语言:javascript
复制
mscorlib.dll!System.Threading.Thread.Sleep

希望这能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34186383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档