dotnet调试相关

如果你正在调试一个托管应用程序,却发现不能查看任何局部变量或者函数参数的值,这是因为托管代码在编译时已经被优化了。下面的内容将告诉你怎样解决这个问题。我会教大家一种非常简单的小技巧来利用.ini文件禁止代码优化。它不需要你重新编译你的应用程序并且只要几秒钟就能实现。 创建一个.ini文件并添加如下内容:

[.NET Framework Debugging Control]

GenerateTrackingInfo=1

AllowOptimize=0

 

 

 

在 WinDbg 的安装目录下新建一个文本文件,假设为 cmdtree.txt(如下);然后打开windbg,执行.cmdtree cmdtree.txt

windbg ANSI Command Tree 1.0
title {"Crash Dump Analysis Checklist (www.dumpanalysis.org)"}
body
{"Crash Dump Analysis Checklist (www.dumpanalysis.org)"}
 {"General"}
  {"Versions and locations"} {"version"}
  {"Set longer stack trace"} {".kframes 100"}
 {"Application crash or hang"}
  {"Default analysis (crash)"} {"!analyze -v"}
  {"Default analysis (hang)"} {"!analyze -v -hang"}
  {"Switch to x86 architecture"} {".load wow64exts; .effmach x86"}
  {"Critical sections (locked)"} {"!locks"}
  {"Modules"} {"lmv"}
  {"Threads (all)"} {"~*kv 250"}
  {"Threads (unique)"} {"!uniqstack"}
  {"Gflags"} {"!gflag"}
  {"Time consumed by thread"} {"!runaway"}
  {"PEB"} {"!peb"}
  {"TEB"} {"!teb"}
  {"Hooked functions (ntdll)"} {"!chkimg -lo 50 -d !ntdll -v"}
  {"Hooked functions (kernel32)"} {"!chkimg -lo 50 -d !kernel32 -v"}
  {"Hooked functions (user32)"} {"!chkimg -lo 50 -d !user32 -v"}
  {"Hooked functions (ALL)"} {"!for_each_module !chkimg -lo 50 -d !${@#ModuleName} -v"}
  {"Exception handlers"} {"!exchain"}
  {"Computer name"} {"!envvar COMPUTERNAME"}
  {"Stack of exception thread"} {"~#kv 250"}
  {"Stack of current thread"} {"~.kv 250"}
  {"Switch to thread"}
   {"#0"} {"~0s"}
   {"#1"} {"~1s"}
   {"#2"} {"~2s"}
   {"#3"} {"~3s"}
   {"#4"} {"~4s"}
   {"#5"} {"~5s"}
   {"#6"} {"~6s"}
   {"#7"} {"~7s"}
   {"#8"} {"~8s"}
   {"#9"} {"~9s"}
 {"System hang"}
  {"Default analysis"} {"!analyze -v -hang"}
  {"ERESOURCE contention"} {"!locks"}
  {"Processes and virtual memory"} {"!vm 4"}
  {"Sorted pool consumption (paged)"} {"!poolused 4"}
  {"Sorted pool consumption (nonpaged)"} {"!poolused 3"}
  {"Waiting threads"} {"!stacks"}
  {"Critical system queues"} {"!exqueue f"}
  {"I/O"} {"!irpfind"}
  {"The list of all thread stack traces"} {"!process 0 ff"}
  {"Critical sections for current process"} {"!ntsdexts.locks"}
  {"Sessions"} {"!session"}
  {"Processes"} {"!process 0 0"}
  {"Running threads"} {"!running"}
  {"Ready threads"} {"!ready"}
  {"DPC queues"} {"!dpcs"}
  {"The list of APCs"} {"!apc"}
  {"Internal queued spinlocks"} {"!qlocks"}
  {"Computer name"} {"dS srv!srvcomputername"}
  {"Switch to processor"}
   {"#0"} {"~0s"}
   {"#1"} {"~1s"}
   {"#2"} {"~2s"}
   {"#3"} {"~3s"}
   {"#4"} {"~4s"}
   {"#5"} {"~5s"}
   {"#6"} {"~6s"}
   {"#7"} {"~7s"}
 {"BSOD"}
  {"Default analysis"} {"!analyze -v"}
  {"Processes and virtual memory"} {"!vm 4"}
  {"Bugcheck callback data (prior to Windows XP SP1)"} {"!bugdump"}
  {"Bugcheck secondary callback data"} {".enumtag"}
  {"Computer name"} {"dS srv!srvcomputername"}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值