Har*_*wok 11 .net c# debugging windbg sosex
我正在使用VS.NET 2010.我编译了一个非常简单的.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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我打开windbg 6.12.0002.633编译的可执行文件.键入以下命令以加载sosex
.loadby sosex clr
Run Code Online (Sandbox Code Playgroud)
然后,键入以下命令以设置断点
!mbm TestWindbg.Program.Func1
!mbp Program.cs 16
Run Code Online (Sandbox Code Playgroud)
然后运行该程序.没有一个破发点被击中.
任何的想法?
*编辑*
在这里,我根据Marc的要求粘贴有关我的环境的更多详细信息
0:004> !mbl
1 eu: disable *!TESTWINDBG.PROGRAM.FUNC1 ILOffset=0: pass=1 oneshot=false thread=ANY
2 eu: disable Program.cs, line 16: pass=1 oneshot=false thread=ANY
0:004> .chain
Extension DLL search Path:
C:\Program Files\Debugging Tools for Windows (x64)\WINXP;C:\Program Files\Debugging Tools for Windows (x64)\winext;C:\Program Files\Debugging Tools for Windows (x64)\winext\arcade;C:\Program Files\Debugging Tools for Windows (x64)\pri;C:\Program Files\Debugging Tools for Windows (x64);C:\Program Files\Debugging Tools for Windows (x64)\winext\arcade;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Common Files\Roxio Shared\DLLShared\;C:\Program Files (x86)\Common Files\Roxio Shared\10.0\DLLShared\;C:\Program Files (x86)\Shoreline Communications\ShoreWare Client\;C:\Program Files (x86)\Perforce;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;c:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn\
Extension DLL chain:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\sosex: image 4.5.0.0, API 1.0.0, built Mon May 21 11:39:36 2012
[path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\sosex.dll]
dbghelp: image 6.11.0001.404, API 6.1.6, built Wed Feb 25 18:10:27 2009
[path: C:\Program Files\Debugging Tools for Windows (x64)\dbghelp.dll]
ext: image 6.11.0001.404, API 1.0.0, built Wed Feb 25 18:10:26 2009
[path: C:\Program Files\Debugging Tools for Windows (x64)\winext\ext.dll]
exts: image 6.11.0001.404, API 1.0.0, built Wed Feb 25 18:10:17 2009
[path: C:\Program Files\Debugging Tools for Windows (x64)\WINXP\exts.dll]
uext: image 6.11.0001.404, API 1.0.0, built Wed Feb 25 18:10:20 2009
[path: C:\Program Files\Debugging Tools for Windows (x64)\winext\uext.dll]
ntsdexts: image 6.1.7015.0, API 1.0.0, built Wed Feb 25 18:09:22 2009
[path: C:\Program Files\Debugging Tools for Windows (x64)\WINXP\ntsdexts.dll]
0:004> sx
ct - Create thread - ignore
et - Exit thread - ignore
cpr - Create process - ignore
epr - Exit process - break
ld - Load module - output
ud - Unload module - ignore
ser - System error - ignore
ibp - Initial breakpoint - break
iml - Initial module load - ignore
out - Debuggee output - output
av - Access violation - break - not handled
asrt - Assertion failure - break - not handled
aph - Application hang - break - not handled
bpe - Break instruction exception - break
bpec - Break instruction exception continue - handled
eh - C++ EH exception - second-chance break - not handled
clr - CLR exception - second-chance break - not handled
clrn - CLR notification exception - second-chance break - handled
cce - Control-Break exception - break
cc - Control-Break exception continue - handled
cce - Control-C exception - break
cc - Control-C exception continue - handled
dm - Data misaligned - break - not handled
dbce - Debugger command exception - ignore - handled
gp - Guard page violation - break - not handled
ii - Illegal instruction - second-chance break - not handled
ip - In-page I/O error - break - not handled
dz - Integer divide-by-zero - break - not handled
iov - Integer overflow - break - not handled
ch - Invalid handle - break
hc - Invalid handle continue - not handled
lsq - Invalid lock sequence - break - not handled
isc - Invalid system call - break - not handled
3c - Port disconnected - second-chance break - not handled
svh - Service hang - break - not handled
sse - Single step exception - break
ssec - Single step exception continue - handled
sbo - Stack buffer overflow - break - not handled
sov - Stack overflow - break - not handled
vs - Verifier stop - break - not handled
vcpp - Visual C++ exception - ignore - handled
wkd - Wake debugger - break - not handled
wob - WOW64 breakpoint - break - handled
wos - WOW64 single step exception - break - handled
* - Other exception - second-chance break - not handled
Run Code Online (Sandbox Code Playgroud)
*编辑8/17/2012*
感谢colinsmith,我认为你得到了最接近的答案.我将我的程序编译为32位程序.切换到使用32位Windbg和32位sosex.按照相同的步骤设置断点.现在,如果我这样做!mbl.断点列表的显示方式不同.
0 e : disable *!TESTWINDBG.PROGRAM.FUNC1 ILOffset=0: pass=1 oneshot=false thread=ANY
TestWindbg!TestWindbg.Program.Func1() (PENDING JIT)
Run Code Online (Sandbox Code Playgroud)
以前,我没有看到这条线(PENDING JIT).继续该程序,Windbg在断点处成功停止.
我不知道为什么64位程序不起作用.我仔细检查了我的64位sosex.dll和我的64位程序符号路径.一切看起来都很正确.也许,这是sosex.dll中的一个错误?
我使用的是.NET 4.0,我的windbg在Windows 2008 R2 64位中运行.
以下是一些建议,需要检查的事项:
在设置断点之前,您可以尝试等待运行/ JITter /模块加载/初始化之后.
使用:
sxe ld:mscorlib (加载运行时后中断)...或 sxe ld:clrjit (加载JITter后中断)...或 sxe ld:MyModuleAssemblyName (加载特定模块后中断)这将导致它们发生后进入调试器....然后你可以做你的!mbm等等.
使用:
lml (显示已加载且无法加载符号)lme (显示只能加载符号).您也可以使用!sym noisy详细的符号加载活动跟踪,例如,当您损坏.pdbs等时帮助发现.
有关PDB相关错误代码的有用参考:
有关验证符号是否正确加载的一般性讨论,请参阅:
另外你可以尝试在32位调试器而不是64位调试器下运行你的程序(当然使用32位SOSEX插件......并编译为x86)...并查看是否得到相同的结果.
在Steves Techspot中,他说他破坏了XP中的兼容性(你似乎正在使用它)......也许这就是问题所在.(2012年6月8日)
| 归档时间: |
|
| 查看次数: |
1678 次 |
| 最近记录: |