Роббинс Д. - Отладка приложений для Microsoft .NET и Microsoft Windows - 2004
.pdfПРИЛОЖЕНИE Б Ресурсы для разработчиков приложений .NET и Windows |
703 |
|
|
Web-сайты
MSDN Online (msdn.microsoft.com)
Поиск любой информации о .NET и Windows следует начинать с MSDN. Дос туп к MSDN можно получить как по указанному мной адресу, так и через под держиваемый Microsoft журнал «MSDN Magazine». Помните, что MSDN — час тично коммерческая организация, поэтому предоставляемая ею информация иногда носит несколько рекламный характер.
ASP.NET Web (www.asp.net)
Официальный сайт группы, отвечающей в Microsoft за ASP.NET. Никак не могу понять, почему Microsoft не накрыла этот сайт зонтиком MSDN.
Раздел Microsoft в поисковой системе Google (www.google.com/microsoft.html) Хотя для изучения технологий Microsoft у нас есть сайт MSDN, его возможно сти поиска оставляют желать лучшего. К нашей радости, в системе Google есть специальный сайт, предназначенный для поиска информации, связанной только с технологиями Microsoft. Если вы хотите использовать хваленую систему Google для поиска информации только на сайте MSDN, введите в строке поиска вы ражение site:msdn.microsoft.com.
Sysinternals (www.sysinternals.com)
Марк Руссинович (Mark Russinovich) и Брайс Когсвелл (Bryce Cogswell) разра ботали некоторые из самых лучших утилит для отладки неуправляемого кода: Regmon, Filemon, DebugView, Process Explorer и многие другие. Ко многим ути литам прилагается полный исходный код, и все они бесплатны! Чтобы не от стать от остального мира, я посещаю сайт Марка и Брайса минимум раз в не делю.
SmidgeonSoft Расса Остерлунда (Russ Osterlund) (www.smidgeonsoft.com) Расс собрал коллекцию фантастических бесплатных утилит, успешно конку рирующих с программами Sysinternals. На его сайте вы сможете найти отлад чик PEBrowse Professional Interactive, который поддерживает не только управ ляемый код, но и код .NET. Если вы хотите увидеть внутренности ОС, Расс по может вам в этом.
Code Project (www.codeproject)
Прекрасный сайт сообщества разработчиков неуправляемых программ и про грамм .NET.
CodeGuru (www.codeguru.com)
Это прародитель всех сайтов, посвященных программированию для Windows. Теперь он содержит информацию и о .NET!
VB2TheMax (www.vb2themax.com)
Информационный ресурс для программистов, работающих с Microsoft Visual Basic .NET.
Wintellect (www.wintellect.com)
Сайт компании Wintellect, на форумах которого мы отвечаем на разные вопросы (а иногда и задаем их!).
706 |
|
Предметный указатель |
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
— CFile |
469 |
|
|
|
|
|
— /v 69 |
|
|
|
|
|
|
|
|
||
— CObject 109, 617 |
|
|
— /v Version 69 |
|
|
|
|
|
|
||||||||
— CSymbolEngine |
457 |
|
— /VERBOSE:LIB 55 |
|
|
|
|
|
|||||||||
— CUseCriticalSection |
531, 532 |
— /W3 |
41 |
|
|
|
|
|
|
|
|||||||
— Debug |
92 |
|
|
|
|
|
— /W4 |
41, 44, 648 |
|
|
|
|
|
|
|||
— Debugger |
95 |
|
|
|
|
— /WARN 39 |
|
|
|
|
|
|
|
||||
— EventLogTraceListener 86 |
— /WARNASERROR+ |
|
40 |
|
|
|
|
||||||||||
— ExceptApp.Days |
366 |
|
— /Wp64 |
51 |
|
|
|
|
|
|
|
||||||
— Global |
93 |
|
|
|
|
|
— /WX |
|
41, 44, 648 |
|
|
|
|
|
|
||
— MyThreadClass |
|
199 |
|
|
— /X 51 |
|
|
|
|
|
|
|
|||||
— StackFrame |
86 |
|
|
|
— /Zi |
35 |
|
|
|
|
|
|
|
||||
— StackTrace |
86 |
|
|
|
— /Zp |
51 |
|
|
|
|
|
|
|
||||
— String |
366 |
|
|
|
|
— add |
68 |
|
|
|
|
|
|
|
|||
— StringBuilder |
223 |
|
|
— del |
68 |
|
|
|
|
|
|
|
|||||
— System.Threading.Thread |
220, 222 |
—/RTCs |
647 |
|
|
|
|
|
|
|
|||||||
— System.Web.UI.Page |
133 |
|
код |
|
|
|
|
|
|
|
|
|
|||||
— TextWriterTraceListener |
86, 91 |
— обзор |
536 |
|
|
|
|
|
|
|
|||||||
— TNotify 581 |
|
|
|
|
— прекомпилированный |
425 |
|
|
|||||||||
— TraceListener |
86, 89 |
|
— регистрирующий |
519 |
|
|
|
||||||||||
— TraceSwitch 132 |
|
|
— слежения за временем жизни объекта 474 |
||||||||||||||
ключ |
|
|
|
|
|
|
|
— стартовый |
523 |
|
|
|
|
|
|
||
— /? 69 |
|
|
|
|
|
|
команда |
|
|
|
|
|
|
|
|
||
— /ADV |
230 |
|
|
|
|
|
— записи метки 30 |
|
|
|
|
|
|||||
— /BASE |
47 |
|
|
|
|
|
— мета |
|
330, 352 |
|
|
|
|
|
|
||
— /BASEADDRESS |
48 |
|
|
— — запись файлов дампа |
330 |
|
|
||||||||||
— /c 69 |
|
|
|
|
|
|
— — присоединение к процессам |
330 |
|||||||||
— /C |
50 |
|
|
|
|
|
|
— — создание файлов регистрации |
330 |
||||||||
— /checked+ |
49 |
|
|
|
|
— расширения |
330, 354, 358 |
|
|
||||||||
— /DEBUG 36, 37, 55, 232 |
|
— — анализ аварийного завершения |
330 |
||||||||||||||
— /DOC |
40 |
|
|
|
|
|
— — анализ критических секций |
330 |
|||||||||
— /EHa |
475 |
|
|
|
|
|
— — вывод описателей |
330 |
|
|
|||||||
— /EHs 475 |
|
|
|
|
|
— стандартные 330 |
|
|
|
|
|||||||
— /EP |
50 |
|
|
|
|
|
— — исполнение по шагам |
330 |
|
|
|||||||
— /f File |
68 |
|
|
|
|
|
— — просмотр памяти |
330 |
|
|
|||||||
— /Gh |
434, 666 |
|
|
|
|
— — проход по шагам 341 |
|
|
|
||||||||
— /GH |
434 |
|
|
|
|
|
— — трассировка |
330 |
|
|
|
|
|||||
— /GL |
53, 55 |
|
|
|
|
— точка |
330 |
|
|
|
|
|
|
|
|||
— /GS |
52, 653 |
|
|
|
|
комментирование кода |
136 |
|
|
||||||||
— /GX |
475 |
|
|
|
|
|
компилятор 39 |
|
|
|
|
|
|
||||
— /HEADERS |
184 |
|
|
|
— по требованию |
34, 434 |
|
|
|
||||||||
— /i 69 |
|
|
|
|
|
|
компоновка 30, 34 |
|
|
|
|
|
|
||||
— /INCREMENTAL:NO |
36 |
|
— заключительная |
34 |
|
|
|
|
|||||||||
— /LTCG |
53, 55 |
|
|
|
|
— отладочная |
61 |
|
|
|
|
|
|
||||
— /MAP |
54, 446 |
|
|
|
|
компоновщик |
38 |
|
|
|
|
|
|
||||
— /MAPINFO:EXPORTS |
54, 446 |
конечный обработчик исключений |
270 |
||||||||||||||
— /MAPINFO:LINES |
54, 446 |
|
контрольная точка |
|
30 |
|
|
|
|
||||||||
— /noconfig |
49 |
|
|
|
|
критическая секция |
532 |
|
|
|
|||||||
— /NODEFAULTLIB |
54 |
|
|
Л |
|
|
|
|
|
|
|
|
|
||||
— /o |
69 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
линейный адрес 337 |
|
|
|
|
|||||||
— /O1 |
52 |
|
|
|
|
|
|
|
|
|
|||||||
— /OPT:ICF 37 |
|
|
|
|
М |
|
|
|
|
|
|
|
|
|
|||
— /OPT:NOWIN98 |
54 |
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
маркер |
425 |
|
|
|
|
|
|
|
|||||||
— /OPT:REF |
37 |
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
— открытых ключей |
91 |
|
|
|
|
||||||||
— /ORDER 55, 663, 671 |
|
|
|
|
|
||||||||||||
|
маска событий |
436 |
|
|
|
|
|
||||||||||
— /OUT |
232 |
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
метка |
30 |
|
|
|
|
|
|
|
||||
— /P |
50 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
метка версии |
30 |
|
|
|
|
|
|
||||
— /PDB |
36, 37 |
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
метод |
|
|
|
|
|
|
|
|
|
||||
— /PDBSTRIPPED |
56 |
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
— Add |
89 |
|
|
|
|
|
|
|
|||||||
— /r 68 |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
— AddNotification |
576 |
|
|
|
|
||||||
— /REFERENCE |
50 |
|
|
|
|
|
|
||||||||||
|
|
— ASPTraceListener.HandleOutput |
94, 95 |
||||||||||||||
— /RELEASE |
55, 332 |
|
|
||||||||||||||
|
|
— ASPTraceListener.IsRequestFromLocal |
|||||||||||||||
— /RTC |
52 |
|
|
|
|
|
|||||||||||
|
|
|
|
|
Machine 95 |
|
|
|
|
|
|
|
|||||
— /RTC1 |
648 |
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
— Assert |
84 |
|
|
|
|
|
|
|
|||||
— /RTCc |
648 |
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
— AssertValid 109 |
|
|
|
|
|
|
|||||||
— /RTCu |
648 |
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
— BeginInprocDebugging |
426 |
|
|
||||||||||
— /s Store 68 |
|
|
|
|
|
|
|||||||||||
|
|
|
|
— CheckNotification |
|
575, 582, 583 |
|
|
|||||||||
— /showIncludes |
53 |
|
|
|
|
|
|||||||||||
|
|
— CheckVirtualResolution |
578 |
|
|
||||||||||||
— /SOURCE |
232 |
|
|
|
|
|
|||||||||||
|
|
|
— ClassDumper |
627 |
|
|
|
|
|
||||||||
— /t 69 |
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
— Debugger.Launch |
|
95 |
|
|
|
|
|||||
— /t Product |
69 |
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Предметный указатель |
707 |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
— EndInProcDebugging |
426 |
|
|
— TSystem |
574, 581 |
|
|
|
|
|
|||||||||||||
— EnumLocalVariables |
188 |
|
|
|
— TWindow |
574, 577, 581 |
|
|
|||||||||||||||
— ExceptionThrown |
426 |
|
|
|
— TWindows |
|
581 |
|
|
|
|
|
|
||||||||||
— FindTopTWindowByTitle |
574 |
|
описатель |
45 |
|
|
|
|
|
|
|
|
|||||||||||
— FuncEnter |
435 |
|
|
|
|
|
|
— семафора |
532 |
|
|
|
|
|
|
||||||||
— GetClass |
428 |
|
|
|
|
|
|
|
|
— ядра |
110 |
|
|
|
|
|
|
|
|
|
|||
— GetCurrentException |
426 |
|
|
|
отладка |
18 |
|
|
|
|
|
|
|
|
|
||||||||
— GetEventMask |
|
416 |
|
|
|
|
— JIT (Just In Time) |
148 |
|
|
|
||||||||||||
— GetInprocInspectionInterface |
426 |
— базового кода |
518 |
|
|
|
|
||||||||||||||||
— GetInprocInspectionIThisThread |
426 |
— в смешанном режиме |
225 |
|
|
||||||||||||||||||
— GetModuleInfo |
|
415 |
|
|
|
|
— внутрипроцессная |
425 |
|
|
|||||||||||||
— HandleOutput |
94 |
|
|
|
|
|
— интенсивная |
23 |
|
|
|
|
|
||||||||||
— ICorProfilerCallback |
417 |
|
|
|
— на главном сервере |
226 |
|
|
|||||||||||||||
— Init 92 |
|
|
|
|
|
|
|
|
|
|
— планирование |
14 |
|
|
|
|
|||||||
— Initialize 415, 416, 437 |
|
|
|
— сервер символов |
63, 68 |
|
|
||||||||||||||||
— InitializeComponent |
224 |
|
|
|
— службы |
518, 519 |
|
|
|
|
|
||||||||||||
— Launch |
95 |
|
|
|
|
|
|
|
|
— событие |
156 |
|
|
|
|
|
|
|
|||||
— MyDataCheck ( ) |
|
211 |
|
|
|
— стартового кода |
|
523 |
|
|
|
||||||||||||
— PlayInput |
574, 577, 604 |
|
|
|
— удаленная |
226, 265 |
|
|
|
|
|||||||||||||
— Remove |
89 |
|
|
|
|
|
|
|
|
отладочный шлюз |
547 |
|
|
|
|||||||||
— SetEnterLeaveFunctionHooks |
434 |
|
отладчик |
25, 143 |
|
|
|
|
|
|
|||||||||||||
— SetEventMask |
|
434, 436 |
|
|
|
— Borland Delphi |
|
144 |
|
|
|
||||||||||||
— SetFocusTWindow |
581 |
|
|
|
— C++ Builder |
144 |
|
|
|
|
|
|
|||||||||||
— SetForegroundTWindow |
577 |
|
|
— CORDBG.EXE |
223 |
|
|
|
|
||||||||||||||
— SetFunctionIDMapper |
437 |
|
|
— MiniDBG |
154 |
|
|
|
|
|
|
|
|||||||||||
— SetSpecificFocus |
581 |
|
|
|
— NTSD (Microsoft NT Symbolic Debugger) |
324 |
|||||||||||||||||
— Shutdown |
415, 417 |
|
|
|
|
— SOS (Son of Strike) |
|
324, 362 |
|
|
|||||||||||||
— StackWalk |
188 |
|
|
|
|
|
|
— WinDBG |
323, 325, 326, 328, 331, 340 |
|
|||||||||||||
— SymEnumSymbols |
187 |
|
|
|
— — управление |
352 |
|
|
|
|
|||||||||||||
— ThreadFunc |
199 |
|
|
|
|
|
— автоматический запуск |
152 |
|
||||||||||||||
— ToString |
86 |
|
|
|
|
|
|
|
|
— пользовательского режима |
143 |
|
|||||||||||
— Warn |
133 |
|
|
|
|
|
|
|
|
|
— режима ядра |
143, 146 |
|
|
|
||||||||
— Write |
131, 133 |
|
|
|
|
|
|
— — SoftICE |
147 |
|
|
|
|
|
|
||||||||
— WriteIf |
131 |
|
|
|
|
|
|
|
|
— — WinDBG |
146 |
|
|
|
|
|
|
||||||
— WriteLine |
131 |
|
|
|
|
|
|
— — ядра KD |
146 |
|
|
|
|
|
|
||||||||
— WriteLineIf |
131 |
|
|
|
|
|
отлаживаемая программа |
143, 148, 175 |
|
||||||||||||||
— встраивание |
|
436 |
|
|
|
|
ошибка |
2, 3 |
|
|
|
|
|
|
|
|
|
||||||
минидамп |
323, 327, 331, 360, 361, 445, 465, 502, |
— адрес |
444, 446, 450, 451, 456 |
|
|
||||||||||||||||||
503, 504, 505, 506, 535 |
|
|
|
— воспроизведение |
19 |
|
|
|
|||||||||||||||
— с кучей |
273 |
|
|
|
|
|
|
|
|
— обработка |
6 |
|
|
|
|
|
|
|
|||||
— с описателями |
274 |
|
|
|
|
— обработчик |
464 |
|
|
|
|
|
|||||||||||
многодокументный интерфейс |
см. MDI |
— описание |
20 |
|
|
|
|
|
|
|
|||||||||||||
многопоточная среда |
415 |
|
|
|
— поиск |
|
444 |
|
|
|
|
|
|
|
|
||||||||
многопоточность |
528 |
|
|
|
П |
|
|
|
|
|
|
|
|
|
|
|
|||||||
О |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
поток финализации |
438 |
|
|
|
||||||||
обработка исключений |
|
|
|
почтовый ящик |
517 |
|
|
|
|
||||||||||||||
— C++ |
465, 468, 469, 470, 474 |
|
|
предупреждение |
38 |
|
|
|
|
|
|||||||||||||
— векторная |
468 |
|
|
|
|
|
|
приложение |
|
|
|
|
|
|
|
|
|
||||||
— синхронная |
|
475 |
|
|
|
|
|
— неуправляемое |
245 |
|
|
|
|||||||||||
— структурная |
|
465 |
|
|
|
|
|
— профилируемое |
|
414 |
|
|
|
||||||||||
обработчик |
|
|
|
|
|
|
|
|
|
проецируемые в память файлы 517 |
|
||||||||||||
— исключений |
|
464 |
|
|
|
|
|
пространство имен |
|
|
|
|
|
||||||||||
— ошибок |
475 |
|
|
|
|
|
|
|
|
— System.Diagnostic |
84 |
|
|
|
|||||||||
общеязыковая |
|
|
|
|
|
|
|
|
— System.Diagnostics |
|
92 |
|
|
|
|||||||||
— инфраструктура |
см. CLI |
|
|
|
профилирование |
|
413, 414 |
|
|
||||||||||||||
— исполняющая среда |
см. CLR |
|
— с выборкой имен |
414 |
|
|
|
||||||||||||||||
общий формат объектных файлов |
см. COFF |
процесс |
|
|
|
|
|
|
|
|
|
|
|
||||||||||
объект |
|
|
|
|
|
|
|
|
|
|
|
— дочерний |
335 |
|
|
|
|
|
|
||||
— CBinaryImage |
|
462 |
|
|
|
|
— присоединение |
338 |
|
|
|
||||||||||||
— CUseCriticalSection |
530 |
|
|
|
— просмотр |
336 |
|
|
|
|
|
|
|||||||||||
— Debug |
84, 131 |
|
|
|
|
|
|
— создание |
337 |
|
|
|
|
|
|
|
|||||||
— DefaultTraceListener |
85, 89 |
|
|
Р |
|
|
|
|
|
|
|
|
|
|
|
||||||||
— Page |
94 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
расширение |
353 |
|
|
|
|
|
|
|||||||
— System.Diagnostics.Debugger |
95 |
|
|
|
|
|
|
|
|||||||||||||||
— TInput |
574 |
|
|
|
|
|
|
|
|
— загрузка 353 |
|
|
|
|
|
|
|
||||||
— TNotify |
574, 575, 576, 583 |
|
|
|
— команды |
354, 358 |
|
|
|
|
|||||||||||||
— Trace |
84, 131 |
|
|
|
|
|
|
|
— управление |
353 |
|
|
|
|
|
||||||||
— TraceListener |
|
84, 89, 90, 91, 92 |
|
расширяемый язык разметки |
см. XML |
|
|||||||||||||||||
— TraceSwitch |
132 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
708 Предметный указатель
С |
|
|
|
|
|
|
|
|
|
|
Ф |
|
|
|
|
|
|
|
|
|
|
|
сборка |
58 |
|
|
|
|
|
|
|
|
файл |
|
|
|
|
|
|
|
|
|
|
||
— идентификатор |
415 |
|
|
|
— дампа |
359 |
|
|
|
|
|
|
|
|
|
|||||||
свертывание диалоговых окон |
109 |
— — краткий |
359 |
|
|
|
|
|
|
|||||||||||||
свойство |
|
|
|
|
|
|
|
|
|
— — открытие |
|
360 |
|
|
|
|
|
|
||||
— Debugger.IsAttached |
95 |
|
|
|
— — отладка |
361 |
|
|
|
|
|
|
||||||||||
— EventSource |
93 |
|
|
|
|
|
— — полный |
359 |
|
|
|
|
|
|
||||||||
— HttpContext.Current.Handler 94 |
— — создание |
|
359 |
|
|
|
|
|
|
|||||||||||||
— LaunchDebuggerOnAssert |
93 |
|
— порядка 669 |
|
|
|
|
|
|
|
|
|||||||||||
— ShowDebugLog |
93 |
|
|
|
|
флаг ловушки |
181 |
|
|
|
|
|
|
|||||||||
— ShowOutputDebugString |
|
93 |
|
функция |
|
|
|
|
|
|
|
|
|
|
||||||||
— Writer |
93 |
|
|
|
|
|
|
|
|
— _AfxActivationWndProc |
637 |
|
||||||||||
символ |
|
|
|
|
|
|
|
|
|
|
— _beginthread |
541 |
|
|
|
|
|
|
||||
— верхнего уровня |
246 |
|
|
|
— _beginthreadex |
533, 541 |
|
|
||||||||||||||
— корректная загрузка 331 |
|
— _CorDllMain |
|
48, 49 |
|
|
|
|
|
|||||||||||||
— отладки |
34, 35 |
|
|
|
|
|
|
— _CrtCheckMemory |
617 |
|
|
|
||||||||||
— перечисление |
675 |
|
|
|
|
— _CrtIsMemoryBlock |
617 |
|
|
|
||||||||||||
— сервер |
69, 70, 183, 452 |
|
|
|
— _CrtIsValidHeapPointer |
|
617 |
|
||||||||||||||
система |
|
|
|
|
|
|
|
|
|
|
— _CrtIsValidPointer |
617 |
|
|
|
|
||||||
— отладки |
33 |
|
|
|
|
|
|
|
— _CrtMemDifference |
617 |
|
|
|
|||||||||
— отслеживания ошибок |
29, 31 |
— _CrtMemDumpStatistics |
|
617 |
|
|||||||||||||||||
— управления версиями |
26, 27, 30, 32 |
— _CrtSetDbgFlag |
634 |
|
|
|
|
|
||||||||||||||
служба |
515 |
|
|
|
|
|
|
|
|
— _CrtSetReportMode |
107, 649 |
|
||||||||||
— идентификационные данные |
520 |
— _exitthread |
541 |
|
|
|
|
|
|
|||||||||||||
— отладка |
519 |
|
|
|
|
|
|
|
— _exitthreadex |
|
533, 534, 541 |
|
||||||||||
— подключение |
520 |
|
|
|
|
— _penter |
671 |
|
|
|
|
|
|
|
|
|||||||
событие |
350 |
|
|
|
|
|
|
|
— _ReturnAddress |
507, 555 |
|
|
||||||||||
спин блокировка |
532, 533 |
|
|
— _RTC_GetErrDesc |
652 |
|
|
|
|
|||||||||||||
средство |
|
|
|
|
|
|
|
|
|
— _RTC_Initialize |
652 |
|
|
|
|
|
||||||
— обхода зависимостей сборок |
414 |
— _RTC_NumErrors |
652 |
|
|
|
|
|||||||||||||||
— профилирования |
420 |
|
|
|
— _RTC_SetErrorFunc |
652 |
|
|
|
|||||||||||||
— тестирования |
28 |
|
|
|
|
|
— _RTC_SetErrorType |
652 |
|
|
|
|||||||||||
стандартная библиотека шаблонов см. STL |
— _set_se_translator |
474 |
|
|
|
|
||||||||||||||||
стековая цепочка |
426 |
|
|
|
— _set_security_error_handler |
654 |
||||||||||||||||
счетчик |
|
|
|
|
|
|
|
|
|
|
— AccessLocalsAndParamsExample |
297 |
||||||||||
— выполнения |
205 |
|
|
|
|
|
— AddCrashHandlerLimitModule 500 |
|||||||||||||||
— приостановок |
337 |
|
|
|
|
— AddVectoredExceptionHandler |
468 |
|||||||||||||||
Т |
|
|
|
|
|
|
|
|
|
|
— AllocateProfilerCallback |
423 |
|
|||||||||
|
|
|
|
|
|
|
|
|
|
— AttachThreadInput |
581 |
|
|
|
||||||||
таблица |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
— calloc |
610 |
|
|
|
|
|
|
|
|
|
||
— адресов импортируемых функций см. IAT |
— CheckMyMem |
|
247 |
|
|
|
|
|
||||||||||||||
— символов |
183 |
|
|
|
|
|
|
— CloseHandle |
|
541 |
|
|
|
|
|
|
||||||
тест |
|
|
|
|
|
|
|
|
|
|
— CommonSnapCurrentProcessMiniDump 507 |
|||||||||||
— блочный |
28, 73, 137 |
|
|
|
— ContinueDebugEvent |
158, 159, 181 |
||||||||||||||||
— дымовой |
59 |
|
|
|
|
|
|
|
— CreateCurrentProcessCrashDump |
506 |
||||||||||||
тестовое приложение |
28 |
|
|
|
— CreateEventA |
541 |
|
|
|
|
|
|
||||||||||
точка прерывания |
178, 182, 347 |
|
— CreateEventW |
|
541 |
|
|
|
|
|
||||||||||||
— код окна 198 |
|
|
|
|
|
|
— CreateMutexA |
|
541 |
|
|
|
|
|
||||||||
— модификатор |
205, 216 |
|
|
|
— CreateMutexW |
541 |
|
|
|
|
|
|||||||||||
— общая |
347 |
|
|
|
|
|
|
|
— CreateProcess |
|
154, 258, 315 |
|
||||||||||
— по данным |
246, 252 |
|
|
|
— CreateRemoteThread |
182, 183 |
|
|||||||||||||||
— по обращению к памяти |
349 |
— CreateSemaphoreA |
|
541 |
|
|
|
|||||||||||||||
— подсказка |
197 |
|
|
|
|
|
|
— CreateSemaphoreW |
541 |
|
|
|||||||||||
— расширенная |
196 |
|
|
|
|
— CreateThread |
533, 541 |
|
|
|
|
|||||||||||
— синтаксис |
246 |
|
|
|
|
|
|
— DBG_ReadProcessMemory |
176 |
|
||||||||||||
— усложненная |
216, 245 |
|
|
|
— DeadDetExtClose |
554 |
|
|
|
|
||||||||||||
— установка |
347 |
|
|
|
|
|
|
— DeadDetExtOpen |
554 |
|
|
|
|
|||||||||
трассировка |
130, 131, 132, 133, 134, 135, 341, |
— DeadDetProcessEvent |
554 |
|
|
|||||||||||||||||
433, 655 |
|
|
|
|
|
|
|
|
|
— DebugBreak |
152, 182, 521, 644 |
|
||||||||||
У |
|
|
|
|
|
|
|
|
|
|
— DeleteCriticalSection |
541 |
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
— DllMain |
468, 543 |
|
|
|
|
|
|
|||||
управляемый модуль |
|
48 |
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
— DoSomethingMultithreaded |
530 |
|||||||||||||||||
условное выражение |
|
207, 216, 250 |
||||||||||||||||||||
|
— EnterCriticalSection |
533, 541, 545 |
||||||||||||||||||||
утверждение |
74, 79, 102, 130, 610 |
|||||||||||||||||||||
— EnumLocalVariables |
188 |
|
|
|||||||||||||||||||
— игнорирование |
114 |
|
|
|
|
|
||||||||||||||||
|
|
|
— ExitProcess |
541, 567 |
|
|
|
|
||||||||||||||
— подавление |
109 |
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
— ExitThread |
533, 541 |
|
|
|
|
||||||||||||
— тип 106 |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
— FindFirstFile |
|
502 |
|
|
|
|
|
|
||||||
— уведомление |
519 |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
— FindNextFile |
|
502 |
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
— FlushFastTraceFiles |
|
658 |
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
— FlushInstructionCache |
158 |
|
|
|
|
|
|
|
|
|
Предметный указатель |
709 |
||||||
|
|
|
|
|
|
|
|
|
|
|||||
— FreeLibrary |
541 |
|
|
|
|
— ReadProcessMemory |
158, 176 |
|
|
|||||
— FreeLibraryAndExitThread |
541 |
— RealSuperAssertion |
116 |
|
|
|
||||||||
— FunctionIDMapper |
436 |
|
|
— RegisterServiceCtrlHandlerEx |
517 |
|
||||||||
— GetDeadlockDetectionOptions 543 |
— ReleaseMutex |
541 |
|
|
|
|
||||||||
— GetExceptionCode |
466, 467 |
— ReleaseSemaphore |
541 |
|
|
|
||||||||
— GetExceptionInformation |
467 |
— RemoveCrashHandlerLimitModule |
501 |
|||||||||||
— GetFaultReason |
502 |
|
|
|
— ResetEvent |
541 |
|
|
|
|
||||
— GetFirstStackTraceString |
502, 503 |
— ResumeDeadlockDetection |
543 |
|
||||||||||
— GetLastError |
555 |
|
|
|
|
— ResumeThread |
541 |
|
|
|
|
|||
— GetLimitModuleCount |
501 |
|
— SendInput |
|
581, 607 |
|
|
|
|
|||||
— GetLimitModulesArray |
501 |
|
— SendKeys |
581 |
|
|
|
|
||||||
— GetNamedImportDescriptor |
553 |
— SendMessage |
541 |
|
|
|
|
|||||||
— GetNextStackTraceString |
502, 503 |
— SetBreakpoint |
178 |
|
|
|
|
|||||||
— GetObjectType |
102 |
|
|
|
— SetCrashHandlerFilter 500 |
|
|
|
||||||
— GetProcAddress |
173, 505, 541, 546, 547, 567 |
— SetCriticalSectionSpinCount |
533, 541 |
|||||||||||
— GetRealAddress |
260 |
|
|
|
— SetDeadlockDetectionOptions |
543 |
|
|||||||
— GetRegisterString |
502 |
|
|
|
— SetEvent |
541 |
|
|
|
|
|
|||
— GetThreadContext |
507 |
|
|
— SetFastTraceOptions |
657 |
|
|
|
||||||
— GlobalLock |
319 |
|
|
|
|
— SetLastError |
555 |
|
|
|
|
|||
— HeapCreate |
638 |
|
|
|
|
— SetServiceStatus 517 |
|
|
|
— HeapFree |
638 |
|
|
|
|
|
|
|
— SetSingleStep |
181 |
|
|
|
|
|
||||||
— HookImportedFunctionsByName 547, 548, 553 |
— SetTimer |
|
583 |
|
|
|
|
|
|
||||||||||||
— HookImportedFunctionsByNameA |
548 |
— SetUnhandledExceptionFilter |
475, 476, 500 |
||||||||||||||||||
— HookImportedFunctionsByNameW |
548 |
— SignalObjectAndWait |
541 |
|
|
||||||||||||||||
— HookOrdinalExport |
547 |
|
|
|
— SnapCurrentProcessMiniDump |
506, 507, 535 |
|||||||||||||||
— InitializeCriticalSection |
541 |
|
|
— SnapFastTraceFiles |
658 |
|
|
|
|||||||||||||
— InitializeCriticalSectionAndSpinCount |
533, 541 |
— StackWalk64 |
185, 190 |
|
|
|
|||||||||||||||
— InitInstance |
636 |
|
|
|
|
|
|
— StartDebugging |
80 |
|
|
|
|
||||||||
— InterlockedIncrement |
300 |
|
|
— StartServiceCtrlDispatcher |
516, 523 |
||||||||||||||||
— IsBadCodePtr |
102 |
|
|
|
|
|
— SuperAssertion 115 |
|
|
|
|
||||||||||
— IsBadReadPtr |
102 |
|
|
|
|
|
— SuspendDeadlockDetection |
543 |
|||||||||||||
— IsBadStringPtr |
|
102 |
|
|
|
|
|
— SuspendThread |
541 |
|
|
|
|
||||||||
— IsBadWritePtr |
102 |
|
|
|
|
|
— SymGetSymNext |
452 |
|
|
|
||||||||||
— IsDebuggerPresent |
144 |
|
|
|
— SymGetSymPrev |
452 |
|
|
|
||||||||||||
— IsMiniDumpFunctionAvailable |
506 |
|
— SymInitialize |
501 |
|
|
|
|
|
||||||||||||
— IsWindow |
|
102 |
|
|
|
|
|
|
|
— SymSetOptions |
457 |
|
|
|
|
||||||
— keybd_event |
581 |
|
|
|
|
|
|
— TerminateThread |
541 |
|
|
|
|||||||||
— LeaveCriticalSection |
541 |
|
|
|
— TryEnterCriticalSection |
541, 545 |
|||||||||||||||
— LoadLibrary |
247, 543 |
|
|
|
|
— TuneModule |
680 |
|
|
|
|
|
|||||||||
— LoadLibraryA |
541, 566 |
|
|
|
|
— ValidateAllBlocks |
|
627, 629 |
|
|
|||||||||||
— LoadLibraryExA |
541 |
|
|
|
|
— VirtualProtect |
158 |
|
|
|
|
||||||||||
— LoadLibraryExW |
541 |
|
|
|
|
— VirtualProtectEx |
176 |
|
|
|
|||||||||||
— LoadLibraryW |
|
541, 566 |
|
|
|
— WaitForDebugEvent |
105, 155, 158 |
||||||||||||||
— main |
68 |
|
|
|
|
|
|
|
|
|
|
— WaitForMultipleObjects |
541 |
|
|||||||
— malloc |
610, 614 |
|
|
|
|
|
|
— WaitForMultipleObjectsEx |
541 |
||||||||||||
— MessageBox |
|
637 |
|
|
|
|
|
|
— WaitForSingleObject |
531, 541 |
|
||||||||||
— MiniDumpWriteDump |
504, 505 |
|
— WaitForSingleObjectEx |
531, 541 |
|||||||||||||||||
— MsgWaitForMultipleObjects 541 |
|
— WaitMessage |
542 |
|
|
|
|
|
|||||||||||||
— MsgWaitForMultipleObjectsEx |
541 |
|
— WriteProcessMemory |
158 |
|
|
|||||||||||||||
— new 610, 614 |
|
|
|
|
|
|
|
— wsprintf |
501 |
|
|
|
|
|
|
|
|||||
— NtWaitForSingleObject |
531 |
|
|
— ZwWaitForSingleObject |
531 |
|
|||||||||||||||
— OnIdle |
528 |
|
|
|
|
|
|
|
|
— адрес 546 |
|
|
|
|
|
|
|
||||
— OpenDeadlockDetection |
543 |
|
|
— добавление |
15 |
|
|
|
|
|
|
||||||||||
— OpenEventA |
541 |
|
|
|
|
|
|
— заглушка |
|
137 |
|
|
|
|
|
|
|||||
— OpenEventW |
541 |
|
|
|
|
|
— контрольная таблица |
59 |
|
|
|||||||||||
— OpenMutexA |
541 |
|
|
|
|
|
|
— ловушка |
433, 434, 553, 555, 617 |
||||||||||||
— OpenMutexW |
|
541 |
|
|
|
|
|
— — сквозная |
555 |
|
|
|
|
|
|||||||
— OpenSemaphoreA |
541 |
|
|
|
|
— открытая |
|
56, 447 |
|
|
|
|
|
||||||||
— OpenSemaphoreW |
541 |
|
|
|
— отладчика |
18 |
|
|
|
|
|
|
|||||||||
— OutputDebugString |
545, 546, 610 |
|
— перехват |
|
545, 567 |
|
|
|
|
||||||||||||
— PlayInput |
581 |
|
|
|
|
|
|
|
— порядок |
|
55 |
|
|
|
|
|
|
|
|||
— PopTheFancyAssertion |
116 |
|
|
— преобразователь идентификаторов 436 |
|||||||||||||||||
— PostMessage |
541 |
|
|
|
|
|
|
— расползание |
10 |
|
|
|
|
|
|||||||
— PrintDlg |
319 |
|
|
|
|
|
|
|
|
— шлюзовая |
78 |
|
|
|
|
|
|
||||
— PulseEvent |
541 |
|
|
|
|
|
|
Х |
|
|
|
|
|
|
|
|
|
||||
— QueueUserWorkItem |
528 |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
хранилище символов |
62 |
|
|
|
||||||||||||||
— RaiseException |
467, 471 |
|
|
|
|
|
|
||||||||||||||
— ReadDebuggeeMemoryEx |
260 |
|
|
хронометраж кода |
|
257 |
|
|
|
Джон Роббинс
Джон — один из основателей Wintellect (www.wintellect.com) — консалтинговой ком пании, занимающейся разработкой, отладкой и обучением. В Wintellect Джон ру ководит службой консалтинга и отладки, помогая отлаживать и настраивать при ложения eBay, Microsoft, AutoDesk и многим другим корпоративным заказчикам. Он разъезжает по всему миру со своим учебным курсом «Отладка приложений
.NET и Windows», и его слушатели учатся методикам, которые он использует для решения самых сложных проблем ПО. Один из наиболее признанных мировых авторитетов по отладке, он получает злорадное удовольствие, находя и исправ ляя совершенно невозможные ошибки в программах других авторов.
Джон живет в Нью Гемпшире (США) с женой Пэм и самым лучшим в мире лов цом ошибок — кошкой Хлоей. Кроме того, что он написал эту книгу и «Debugging Applications» (Microsoft Press, 2000), Джон также постоянно ведет рубрику «Bugslayer» в журнале «MSDN Magazine». Он регулярно выступает на таких конференциях, как Tech Ed, VSLive и DevWeek.
До основания Wintellect Джон был одним из первых сотрудников NuMega Technologies (ныне подразделение Compuware), где играл ключевую роль в про ектировании, разработке, а также был менеджером таких проектов, как Bounds Checker, TrueTime, TrueCoverage, SoftICE и TrueCoverage for Device Drivers.
Прежде чем вляпаться в разработку ПО, Джон, когда ему было около тридца ти, служил десантником в армии США. Поскольку теперь у него нет возможности повышать адреналин, выпрыгивая из самолета среди ночи в темноту и неизвест ность, ожидая кровопролитного боя, он довольствуется своим мотоциклом, гоняя на всей скорости — к великому неудовольствию своей жены.
ЛИЦЕНЗИОННОЕ СОГЛАШЕНИЕ MICROSOFT
(прилагаемый к книге компакт диск)
ЭТО ВАЖНО — ПРОЧИТАЙТЕ ВНИМАТЕЛЬНО. Настоящее лицензионное со глашение (далее «Соглашение») является юридическим документом, оно за ключается между Вами (физическим или юридическим лицом) и Microsoft Corporation (далее «корпорация Microsoft») на указанный выше продукт Micro soft, который включает программное обеспечение и может включать сопут ствующие мультимедийные и печатные материалы, а также электронную документацию (далее «Программный Продукт»). Любой компонент, входящий в Программный Продукт, который сопровождается отдельным Соглашени ем, подпадает под действие именно того Соглашения, а не условий, изложен ных ниже. Установка, копирование или иное использование данного Про граммного Продукта означает принятие Вами данного Соглашения. Если Вы не принимаете его условия, то не имеете права устанавливать, копировать или как то иначе использовать этот Программный Продукт.
ЛИЦЕНЗИЯ НА ПРОГРАММНЫЙ ПРОДУКТ
Программный Продукт защищен законами Соединенных Штатов по авторскому праву и меж дународными договорами по авторскому праву, а также другими законами и договорами по пра вам на интеллектуальную собственность.
1.ОБЪЕМ ЛИЦЕНЗИИ. Настоящее Соглашение дает Вам право:
a)Программный продукт. Вы можете установить и использовать одну копию Программно го Продукта на одном компьютере. Основной пользователь компьютера, на котором установ лен данный Программный Продукт, может сделать только для себя вторую копию и использо вать ее на портативном компьютере.
b)Хранение или использование в сети. Вы можете также скопировать или установить экземпляр Программного Продукта на устройстве хранения, например на сетевом сервере, исключительно для установки или запуска данного Программного Продукта на других ком пьютерах в своей внутренней сети, но тогда Вы должны приобрести лицензии на каждый та кой компьютер. Лицензию на данный Программный продукт нельзя использовать совместно или одновременно на других компьютерах.
c)License Pak. Если Вы купили эту лицензию в составе Microsoft License Pak, можете сделать ряд дополнительных копий программного обеспечения, входящего в данный Программный Продукт, и использовать каждую копию так, как было описано выше. Кроме того, Вы получа ете право сделать соответствующее число вторичных копий для портативного компьютера в целях, также оговоренных выше.
d)Примеры кода. Это относится исключительно к отдельным частям Программного Про дукта, заявленным как примеры кода (далее «Примеры»), если таковые входят в состав Про граммного Продукта.
i)Использование и модификация. Microsoft дает Вам право использовать и модифи цировать исходный код Примеров при условии соблюдения пункта (d)(iii) ниже. Вы не имеете права распространять в виде исходного кода ни Примеры, ни их модифицирован ную версию.
ii)Распространяемые файлы. При соблюдении пункта (d)(iii) Microsoft дает Вам право на свободное от отчислений копирование и распространение в виде объектного кода При меров или их модифицированной версии, кроме тех частей (или их модифицированных версий), которые оговорены в файле Readme, относящемся к данному Программному Про дукту, как не подлежащие распространению.
iii)Требования к распространению файлов. Вы можете распространять файлы, раз решенные к распространению, при условии, что: а) распространяете их в виде объектно го кода только в сочетании со своим приложением и как его часть; б) не используете на звание, эмблему или товарные знаки Microsoft для продвижения своего приложения; в) включаете имеющуюся в Программном Продукте ссылку на авторские права в состав этикетки и заставки своего приложения; г) согласны освободить от ответственности и взять на себя защиту корпорации Microsoft от любых претензий или преследований по закону, включая судебные издержки, если таковые возникнут в результате использования или рас пространения Вашего приложения; и д) не допускаете дальнейшего распространения ко нечным пользователем своего приложения. По поводу отчислений и других условий ли цензии применительно к иным видам использования или распространения распростра няемых файлов обращайтесь в Microsoft.
2.ПРОЧИЕ ПРАВА И ОГРАНИЧЕНИЯ
Ограничения на реконструкцию, декомпиляцию и дизассемблирование. Вы не имеете права реконструировать, декомпилировать или дизассемблировать данный Программ ный Продукт, кроме того случая, когда такая деятельность (только в той мере, которая необ ходима) явно разрешается соответствующим законом, несмотря на это ограничение.
Разделение компонентов. Данный Программный Продукт лицензируется как единый продукт. Его компоненты нельзя отделять друг от друга для использования более чем на од ном компьютере.
Аренда. Данный Программный Продукт нельзя сдавать в прокат, передавать во времен ное пользование или уступать для использования в иных целях.
Услуги по технической поддержке. Microsoft может (но не обязана) предоставить Вам услуги по технической поддержке данного Программного Продукта (далее «Услуги»). Предос тавление Услуг регулируется соответствующими правилами и программами Microsoft, описан ными в руководстве пользователя, электронной документации и/или других материалах, пуб ликуемых Microsoft. Любой дополнительный программный код, предоставленный в рамках Услуг, следует считать частью данного Программного Продукта и подпадающим под действие насто ящего Соглашения. Что касается технической информации, предоставляемой Вами корпора ции Microsoft при использовании ее Услуг, то Microsoft может задействовать эту информацию в деловых целях, в том числе для технической поддержки продукта и разработки. Используя такую техническую информацию, Microsoft не будет ссылаться на Вас.
Передача прав на программное обеспечение. Вы можете безвозвратно уступить все права, регулируемые настоящим Соглашением, при условии, что не оставите себе никаких копий, передадите все составные части данного Программного Продукта (включая компоненты, муль тимедийные и печатные материалы, любые обновления, Соглашение и сертификат подлин ности, если таковой имеется) и принимающая сторона согласится с условиями настоящего Соглашения.
Прекращение действия Соглашения. Без ущерба для любых других прав Microsoft может прекратить действие настоящего Соглашения, если Вы нарушите его условия. В этом случае Вы должны будете уничтожить все копии данного Программного Продукта вместе со всеми его компонентами.
3.АВТОРСКОЕ ПРАВО. Все авторские права и право собственности на Программный Продукт (в том числе любые изображения, фотографии, анимации, видео, аудио, музыку, текст, приме ры кода, распространяемые файлы и апплеты, включенные в состав Программного Продукта) и любые его копии принадлежат корпорации Microsoft или ее поставщикам. Программный Продукт охраняется законодательством об авторских правах и положениями международных договоров. Таким образом, Вы должны обращаться с данным Программным Продуктом, как с любым другим материалом, охраняемым авторскими правами, с тем исключением, что Вы можете установить Программный Продукт на один компьютер при условии, что храните ори гинал исключительно как резервную или архивную копию. Копирование печатных материа лов, поставляемых вместе с Программным Продуктом, запрещается.
ОГРАНИЧЕНИЕ ГАРАНТИИ
ДАННЫЙ ПРОГРАММНЫЙ ПРОДУКТ (ВКЛЮЧАЯ ИНСТРУКЦИИ ПО ЕГО ИСПОЛЬЗОВАНИЮ) ПРЕ ДОСТАВЛЯЕТСЯ БЕЗ КАКОЙ ЛИБО ГАРАНТИИ. КОРПОРАЦИЯ MICROSOFT СНИМАЕТ С СЕБЯ ЛЮ БУЮ ВОЗМОЖНУЮ ОТВЕТСТВЕННОСТЬ, В ТОМ ЧИСЛЕ ОТВЕТСТВЕННОСТЬ ЗА КОММЕРЧЕСКУЮ ЦЕННОСТЬ ИЛИ СООТВЕТСТВИЕ ОПРЕДЕЛЕННЫМ ЦЕЛЯМ. ВЕСЬ РИСК ПО ИСПОЛЬЗОВАНИЮ ИЛИ РАБОТЕ С ПРОГРАММНЫМ ПРОДУКТОМ ЛОЖИТСЯ НА ВАС.
НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ КОРПОРАЦИЯ MICROSOFT, ЕЕ РАЗРАБОТЧИКИ, А ТАКЖЕ ВСЕ, ЗАНЯТЫЕ В СОЗДАНИИ, ПРОИЗВОДСТВЕ И РАСПРОСТРАНЕНИИ ДАННОГО ПРОГРАММНОГО ПРО ДУКТА, НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА КАКОЙ ЛИБО УЩЕРБ (ВКЛЮЧАЯ ВСЕ, БЕЗ ИСКЛЮЧЕ НИЯ, СЛУЧАИ УПУЩЕННОЙ ВЫГОДЫ, НАРУШЕНИЯ ХОЗЯЙСТВЕННОЙ ДЕЯТЕЛЬНОСТИ, ПОТЕ РИ ИНФОРМАЦИИ ИЛИ ДРУГИХ УБЫТКОВ) ВСЛЕДСТВИЕ ИСПОЛЬЗОВАНИЯ ИЛИ НЕВОЗМОЖ НОСТИ ИСПОЛЬЗОВАНИЯ ДАННОГО ПРОГРАММНОГО ПРОДУКТА ИЛИ ДОКУМЕНТАЦИИ, ДАЖЕ ЕСЛИ КОРПОРАЦИЯ MICROSOFT БЫЛА ИЗВЕЩЕНА О ВОЗМОЖНОСТИ ТАКИХ ПОТЕРЬ, ТАК КАК В НЕКОТОРЫХ СТРАНАХ НЕ РАЗРЕШЕНО ИСКЛЮЧЕНИЕ ИЛИ ОГРАНИЧЕНИЕ ОТВЕТСТВЕННОС ТИ ЗА НЕПРЕДНАМЕРЕННЫЙ УЩЕРБ, УКАЗАННОЕ ОГРАНИЧЕНИЕ МОЖЕТ ВАС НЕ КОСНУТЬСЯ.
РАЗНОЕ
Настоящее Соглашение регулируется законодательством штата Вашингтон (США), кроме случаев (и лишь в той мере, насколько это необходимо) исключительной юрисдикции того государства, на территории которого используется Программный Продукт.
Если у Вас возникли какие либо вопросы, касающиеся настоящего Соглашения, или если Вы же лаете связаться с Microsoft по любой другой причине, пожалуйста, обращайтесь в местное пред ставительство Microsoft или пишите по адресу: Microsoft Sales Information Center, One Microsoft Way, Redmond, WA 98052 6399.