断点通过sosex.mbp设置或sosex.mbm不工作(Breakpoint set by sos

2019-06-26 16:57发布

我现在用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);
        }
    }
}

我用的WinDbg 6.12.0002.633打开编译的可执行文件。 输入下列命令来加载sosex

.loadby sosex clr

然后,在键入以下命令来设置断点

!mbm TestWindbg.Program.Func1
!mbp Program.cs 16

然后运行该程序。 在破发点都没有被击中。

任何的想法?

*编辑*

在这里我粘贴约每马克的请求,我的环境的详情

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

*编辑2012年8月17日*

由于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)

以前,我没看行(PENDING JIT) 继续运行程序,并成功的Windbg停止在断点。

我不知道为什么64位程序无法正常工作。 我仔细检查了我的64位sosex.dll和我的64位程序的符号路径。 一切看起来是正确的。 也许,这是在sosex.dll的错误吗?

我使用.NET 4.0和我的WinDbg的是在Windows 2008 R2 64位运行。

Answer 1:

这里有一些建议,需要检查的事项:

等待模块被加载设置断点之前

你可以尝试等到运行时/抖动/模块加载/设置断点前初始化后。

使用:

  • sxe ld:mscorlib (运行后的断裂加载)...或
  • sxe ld:clrjit (抖动后的断裂加载)...或
  • sxe ld:MyModuleAssemblyName (您特定的模块被加载后的断裂)

这将导致中断到调试,他们已经发生后....那么你可以做你的!mbm等。

检查你的程序中的专用符号(从它的.pdb)已经被正确加载

使用:

  • lml (显示加载和加载失败符号)
  • lme (只显示加载失败的符号)。

你可以选择使用!sym noisy的符号加载活动如的详细跟踪有助于发现当你有损坏.pdbs等。

对于一个有用的参考一些PDB相关的错误代码:

  • http://www.codeproject.com/script/Content/ViewAssociatedFile.aspx?rzp=%2FKB%2FDLL%2FSymbols_File_Locator%2FSources.zip&zep=SymbolsParser%2FDiaErrorTranslator.cpp&obid=37883&obtid=2&ovid=3

有关验证符号正确加载看到了一般性讨论:

  • http://msdn.microsoft.com/en-us/library/windows/hardware/ff560260(v=vs.85).aspx

使用32位或64位的WinDBG

此外,你可以试试32位调试器,而不是一个64位下运行您的程序(和使用过程中的32位SOSEX插件...和编译为X86)...如果你得到同样的结果还是没有看到。

使用最新版本的SOSEX的

在史蒂夫Techspot他说他打破了XP(你似乎使用)的兼容性......也许这就是问题所在。 (日期为2012年6月8)

  • http://www.stevestechspot.com/FixForXPIncompatibility.aspx


文章来源: Breakpoint set by sosex.mbp or sosex.mbm not working