Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Роббинс Д. - Отладка приложений для Microsoft .NET и Microsoft Windows - 2004

.pdf
Скачиваний:
322
Добавлен:
13.08.2013
Размер:
3.3 Mб
Скачать

ПРИЛОЖЕНИ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, на форумах которого мы отвечаем на разные вопросы (а иногда и задаем их!).

Предметный указатель

A

ACT (Application Compatibility Toolkit) 643

ActiveX

44

 

 

API 105, 516

 

 

ASP (Active Server Pages) 195

 

assembly dependency walker

см. средство

обхода зависимостей сборок

assertion

см. утверждение

 

assertion notifications

см. утверждение,

уведомление

 

 

assertion suppression

см. утверждение,

подавление

 

 

ATL (Active Template Library)

518

B

bit blitting см. битовый перенос BoundsChecker 144

build см. компоновка

C

checkpoint см. контрольная точка

CLI (Common Language Infrastructure) 414 CLR (common language runtime) 144, 234, 420,

438

COFF (Common Object File Format) 183

CrashFinder

446, 447, 454, 455, 456, 457

CrashHandler 477

CRT 618

 

CRT library

609

D

data breakpoint см. точка прерывания, по данным

DCRT 611, 613, 617, 618

DCRT library 609

DeadlockDetection 540–545, 553, 555, 567

debug thunk см. отладочный шлюз

debuggee

см. отлаживаемая программа

debugger

см. отладчик

defensive programming см. защитное

программирование

DIA (Debug Interface Access) см. интерфейс, доступа к отладочным данным

dialog box folding см. свертывание диалоговых окон

E

error detection tools см. инструменты обнаружения ошибок

event mask см. маска событий ExceptionMon 424, 425 expression см. выражение

extension commands см. команды, расширения

F

FastTrace 655, 657, 659

FCL (.NET Framework class library) 430, 431, 436 final exception handler см. конечный

обработчик исключений

finalizer thread см. поток финализации FlowTrace 437, 439, 441

FPO (Frame pointer omission) 56

G

GAC 91

GDI 635

GUI 142

H

handle см. описатель

I

IA32

18

IAT (import address table) 547

IDE

197

IIS

420, 515, 522, 528

ILDASM (Microsoft Intermediate Language

Disassembler) 215, 228, 229, 242

J

JIT compiler (just in time compiler) см. компилятор, по требованию

JIT компиляция 414

K

kernel handle см. описатель ядра

L

linear address см. линейный адрес logging code см. код, регистрирующий

M

mail slot см. почтовый ящик MAP файл 446, 447

— адрес ошибки 450

 

 

— содержание 447

 

 

— создание

446, 452

 

 

— чтение

446

 

 

MASM (Microsoft Macro Assembler)

274

MDI (multiple document interface)

456

memory mapped files

см. проецируемые

в память файлы

 

 

meta commands см. команды, мета

MFC (Microsoft Foundation Class) 104, 174, 457,

469, 476, 528

 

 

Microsoft Visual SourceSafe 30

 

minidump with handles

см. минидамп,

с описателями

 

 

minidump with heap см. минидамп, с кучей

mixed mode debugging

см. отладка,

в смешанном режиме

 

MKS Source Integrity 30

MSAA (Microsoft Active Accessibility) 581

MSIL (Microsoft Intermediate Language) 18, 228, 235

MSSCCI (Microsoft Source Code Control Interface) 33

multithreaded corruption см. многопоточная среда

N

name sampling profiler см. профилирование с выборкой имен

named pipe см. именованный канал native application см. приложение,

неуправляемое

NTSD (NT Symbolic Debugger) 144

Предметный указатель

705

 

 

O

object lifetime tracking code см. код, слежения за временем жизни объекта

OCX 44

P

pass through function

см. функция, ловушка,

сквозная

 

 

PDB (Program Database) 447

ProfilerLib

422, 423

 

Profiling API

414, 421, 433, 437

property get accessor

см. аксессор чтения

свойства

 

 

public key tokens см. маркеры открытых

ключей

 

 

PVCS Version Manager

30

R

reader interface см. интерфейс, чтения regular commands см. команды, стандартные reverse engineering см. восстановление

алгоритма

S

sampling см. выборка

SCM (Service Control Manager) 516 SEH (structured exception handling)

см. обработка исключений, структурная semaphore handle см. описатель семафора stack chain см. стековая цепочка

STL (Standard Template Library) 41, 43, 342, 439, 452

stub function см. функция, заглушка suspend count см. счетчик, приостановок SWS (Smooth Working Set) 661, 664, 666, 668,

671

T

TEB (Thread Environment Block) 337

Tester

571, 576, 580, 583, 607

TIB (Thread Information Block) 337

token

см. маркер

top level symbol см. символ, верхнего уровня Trap Flag см. флаг ловушки

U

unit test см. тест, блочный

V

version label см. метка версии

W

WDBG 142, 173, 174, 176, 193

WinDBG (Windows Debugger) см. отладчик, режима ядра, WinDBG

Windows Forms 83, 131, 420

writer interface см. интерфейс, записи WSH (Windows Scripting Host) 571

X

XML 3

А

аксессор чтения свойства 216 анализ стека 183, 190

Б

база данных программы см. PDB

библиотека

 

— классов .NET Framework

см. FCL

— стандартных шаблонов

см. STL

битовый перенос 582 блок

— информации о потоке см. TIB

— переменных окружения потока см. TEB

В

восстановление алгоритма 17 выборка 414 выражение 348

Г

глобальный кэш сборок см. GAC графический интерфейс пользователя см. GUI

Д

дизассемблер промежуточного языка Microsoft см. ILDASM

диспетчер управления службами см. SCM

Ж

журнал трассировки 658

З

защитное программирование 72

И

идентификатор функции

418

 

именованный канал

517

 

 

инструменты обнаружения ошибок

413

интегрированная среда разработки

см. IDE

интерфейс

 

 

 

 

 

— ICorDebug 426

 

 

 

 

 

— ICorDebugChainEnum

 

430

 

— ICorDebugGenericValue

428

 

— ICorDebugHeapValue

428

 

— ICorDebugObjectValue

428

 

— ICorDebugReferenceValue 428

 

— ICorDebugThread

426

 

 

— IcorDebugValue

428

 

 

 

— ICorDebugValue

426

 

 

 

— IcorProfilerCallback

439

 

— ICorProfilerCallback 415, 422, 423, 424, 439

— ICorProfilerInfo 415, 418, 425

IDiaSymbol 185

IUnknown 415, 426

— доступа к отладочным данным 184

записи 418

контроля над исходным кодом Microsoft см. MSSCCI

метаданных 418

отладочный 426

чтения 418

исключение 350, 413, 430, 431

адрес 507

асинхронное 474

развертывание 466

фильтр 467, 500

К

кадр стека с отсутствующим указателем

см. FPO класс

ASPTraceListener 93, 95

AssertHttpApplication 93

AutoMatic 634

BugslayerEventLogTraceListener 86

BugslayerStackTrace 87, 138

BugslayerTextWriterTraceListener 86

CBaseProfilerCallback 423

CBinaryImage 462

CCrashFinderDoc 457

CException 469

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.

Соседние файлы в предмете Программирование на C++