Я использую 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
*. РЕДАКТИРОВАТЬ 17.08.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)
Раньше я не видел строку (PENDING JIT)
. Продолжите программу, и Windbg успешно остановится в точке останова.
Я понятия не имею, почему 64 -битная программа не работает. Я дважды проверил свой 64 -бит sosex.dll и мои 64 -битные пути символов программы. Все выглядит правильно. Возможно, это ошибка в sosex.dll?
Я использую.NET 4.0, и мой Windbg работает в Windows 2008 R2 64 -бит.