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

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

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

ПРИЛОЖЕНИE A Чтение журналов Dr. Watson

693

 

 

Вмоем примере журнала Dr. Watson из Windows XP имеются символы, но в журналах ваших пользователей их скорее всего не будет. Однако в столбце RetAddr указаны адреса возврата из функций в стеке вызовов. Если в журнале вашего кли ента нет символов, то, чтобы узнать приведшую к ошибке последовательность вызовов функций, нужно только загрузить каждый адрес из столбца RetAddr в CrashFinder.

Встолбцах Args To Child выводятся три первых параметра функции в стеке.

Вслучае оптимизированных заключительных компоновок при отсутствии сим волов эти значения, вероятно, будут ошибочными. Однако вы все же можете ис пользовать их в качестве отправной точки для изучения своего кода «вручную».

ВWindows 2000 значения символов утилитой Dr. Watson не обрабатываются, поэтому ваши журналы будут выглядеть так:

*——> Обратная трассировка стека <——*

FramePtr ReturnAd Param#1 Param#2 Param#3 Param#4 Function Name 0012FBA0 004100CD 00000714 00000000 80000003 CCCCCCCC !<nosymbols> 0012FBBC 004075F1 00000714 018EF8FC 016705F8 0012FCD8 !<nosymbols> 0012FBD0 7C3422B2 00000714 018EF8FC 0000000D 016705F8 !<nosymbols> 0012FCD8 7C341B2E 00000502 00000714 018EF8FC 0012FCF4 !Ordinal6841 0012FCF8 7C33F2F0 00000502 00000714 018EF8FC 0013BD01 !Ordinal8666 0012FD70 7C33F7CE 016705F8 00090500 00000502 00000714 !Ordinal1363 0012FD90 7C3B072A 00090500 00000502 00000714 018EF8FC !Ordinal1580 0012FDC0 77E3A244 00090500 00000502 00000714 018EF8FC !Ordinal1581 0012FDE0 77E14730 7C3B06E0 00090500 00000502 00000714

user32!SetWindowPlacement 0012FDFC 77E1558A 00517E40 00000502 00000714 018EF8FC

user32!TranslateMessageEx 0012FE24 77FA02FF 0012FE34 00000018 00517E40 00000502 user32!DefWindowProcA 0012FE64 7C34E8E1 00136BC0 00000000 00000000 00000000

ntdll!KiUserCallbackDispatcher 0012FE90 7C34FB4C 00455E30 0012FEB8 7C34F407 00000001 !Ordinal1462

0012FE9C 7C34F407 00000001 00455E30 00136B90 00000002 !Ordinal7046 0012FEB8 7C34FE87 00455E30 00434FFA 0040A66B 0012FEF0 !Ordinal7554 0012FECC 7C34865A 1020C034 102682D0 FFFFFFFF 0012FEF0 !Ordinal7553 0012FEF0 00430008 00400000 00000000 000209D8 00000005 !Ordinal1578 0012FF08 004284B8 00400000 00000000 000209D8 00000005 !<nosymbols> 0012FFC0 77EA847C 0013BD01 0013BD01 7FFDF000 C0000005 !<nosymbols> 0012FFF0 00000000 004282C0 00000000 000000C8 00000100

kernel32!ProcessIdToSessionId

Имена функций выводятся в формате <модуль>!<функция>. Функции, показан ные как Ordinal#, — это функции, экспортируемые по ординалу. Если у вас нет исходного кода DLL, функции которой экспортируются по ординалу, вам не по везло. Однако у вас есть исходный код библиотеки Microsoft Foundation Class (MFC), поэтому вы можете просмотреть значения ординалов MFC. Например, я знаю, что в программе WDBG по адресу 0x7C250000 загружается библиотека MFC71UD.DLL, благодаря чему я могу просмотреть ординалы, так как все функции MFC экспор тируются по ординалам посредством файла определений компоновщика (DEF файла).

694 ЧАСТЬ V Приложения

Единственное условие успешного преобразования значений ординалов MFC в имена функций состоит в том, что вы должны знать версию DLL библиотеки MFC на компьютере, на котором произошла ошибка. В моей системе — \\HUME — ус тановлена MFC71UD.DLL из Visual Studio .NET 2003. Если вы не уверены в версии MFC, установленной на машине пользователя, спросите его об этом или просто потребуйте нужную информацию — как видите, у вас есть выбор.

Чтобы преобразовать ординалы в имена функций, выполните следующие про стые действия.

1.Откройте подкаталог <каталог установки Visual Studio .NET >\VC7\ATLMFC\ SRC\MFC\Intel.

2.Выберите DEF файл, соответствующий нужному вам файлу MFC. Например, файлу MFC71UD.DLL соответствует файл MFC71UD.DEF.

3.Отыщите номер ординала. Для нахождения Ordinal6841 из предыдущего сте ка я поискал бы в файле MFC71UD.DEF значение 6841. Значение 6841 содер жится в строке «?OnWndMsg@CWnd@@MAEHIIJPAJ@Z @ 6841 NONAME».

4.Слева от выражения «@6841 NONAME» указано расширенное имя функции, экспортируемой по данному ординалу. Для приведения имени функции в нор мальный вид используйте программу UNDNAME.EXE из состава Visual Studio .NET. В нашем случае это функция CWnd::OnWndMsg.

5.Третья, заключительная часть состояния потока указана в разделе Raw Stack Dump (копия необработанного стека):

*——> Копия необработанного стека <——*

0012faa8 a8 fc 12 00 40 4b 15 00 6 cc cc cc cc cc cc cc cc

 

 

 

 

 

 

 

 

 

 

 

 

....@K..........

 

 

 

0012fab8 cc cc cc cc cc cc cc cc 6 cc cc cc

cc cc

cc cc cc

 

 

 

 

 

 

 

 

 

 

 

 

................

0012fac8 cc cc cc cc cc cc cc cc 6 cc cc cc

cc cc

cc cc cc

 

 

 

 

 

 

 

 

 

 

 

 

................

0012fad8 cc cc cc cc cc cc cc cc 6 d8 05 13

01

1c

fc 12 00

 

 

 

 

 

 

 

 

 

 

 

 

................

0012fae8 af 55 43 00 ff ff ff ff 6 0c fb 12

00

cd

00

41

00

 

 

 

 

 

 

 

 

 

 

 

 

.UC...........

 

 

 

A.

0012faf8 30 0a 00 00 00 00 00 00 6 03 00 00

80

cc

cc cc cc

 

 

 

 

 

 

 

 

 

 

 

 

0...............

 

 

 

 

 

0012fb08 d8 05 13 01 20 fb 12 00 6 f1 75 40 00 30

0a

00

00

 

 

 

 

 

 

 

 

 

 

 

 

....

 

....

u@.0

...

0012fb18 fc f8 64 01 68 0b 13 01 6 28 fc 12

00

b2

22

34

7c

 

 

 

 

 

 

 

 

 

 

 

 

..d.h

...

(....

 

"4|

0012fb28 30 0a 00 00 fc f8 64 01 6 0d 00 00

00

68

0b

13

01

 

 

 

 

 

 

 

 

 

 

 

 

0.....

 

d.....

 

h

...

0012fb38

00

00

00

00

00

00

00

00

6

00

00

00

00

00

00

00

00

 

 

 

 

 

 

 

 

 

 

 

 

................

0012fb48

00

00

00

00

00

00

00

00

6

00

00

00

00

00

00

00

00

 

 

 

 

 

 

 

 

 

 

 

 

................

0012fb58 b2 98 d4 77 85 70 9b c2 6 00 00 00

00

cc

a5

30

7c

 

 

 

 

 

 

 

 

 

 

 

 

...w.p........

 

 

0|

0012fb68 8c fb 12 00 c7 a7 28 7c 6 01 00 00

00

4c

f5

25

7c

 

 

 

 

 

 

 

ПРИЛОЖЕНИE A

Чтение журналов Dr. Watson

695

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

......

 

(|

....

L.%|

 

0012fb78

5c

01

00

00

03

00

00

00

6

04

00

00

00

e0

f4

25

7c

 

 

 

 

 

 

 

 

 

 

 

 

 

\.............

 

 

 

 

%|

 

0012fb88 cc fb 12 00 b4 fb 12 00 6 91 a7 28 7c 4c f2 43 7c

 

 

 

 

 

 

 

 

 

 

 

 

 

..........

 

 

 

(|L.C|

 

0012fb98

4c

f5

25

7c

5c

01

00

00

6

03

00

00

00

04

00

00

00

 

 

 

 

 

 

 

 

 

 

 

 

 

L.%|\...........

 

 

 

 

0012fba8 e0 f4 25 7c cc fb 12 00 6 00 00 00 00 4c fc 12 00

 

 

 

 

 

 

 

 

 

 

 

 

 

..%|

........

 

L

...

 

0012fbb8 b7 b4 39 7c e8 fb 12 00 6 03 00 00 00 04 00 00 00

 

 

 

 

 

 

 

 

 

 

 

 

 

..9|

............

 

 

 

 

0012fbc8 e0

f4

25

7c

68

4f

25

7c

6

ca 02

25

00 f4 fb 12 00

 

 

 

 

 

 

 

 

 

 

 

 

 

..%|hO%|..%.....

 

 

0012fbd8

30

0a

00

00

32

b5

39

7c

6

00

00

00

00

00

00

00

00

 

 

 

 

 

 

 

 

 

 

 

 

 

0...

 

2.9|

........

 

 

 

Я редко использую эту информацию. Однако, попадая в тупик, я иногда обра щаюсь к ней, пытаясь определить значения локальных переменных. Три адреса возврата, которые я могу сопоставить с описанным ранее анализом стека, выде лены курсивом.

П Р И Л О Ж Е Н И Е

Б

Ресурсы для разработчиков приложений .NET и Windows

Как я говорил в главе 1, успешно отлаживать программы может только высоко квалифицированный программист. Лучшие специалисты по отладке приложений обладают рядом навыков и, что наиболее важно, широким диапазоном знаний. От понимания вами языков, технологий, архитектуры ОС и механизма работы про цессора очень часто будет зависеть, как скоро вы решите проблему: в течение нескольких минут или проведете несколько дней за отладчиком, только пытаясь выяснить, что же происходит.

Я привел этот список ресурсов потому, что меня постоянно спрашивают, ка кие источники я использую для изучения разработки приложений Microsoft .NET и Microsoft Windows. Помните, что он ни в коем случае не является исчерпываю щим и вы можете не согласиться с некоторыми моими советами. Все мои пред ложения носят рекомендательный характер, кроме одного. Если вы разрабатыва ете программы для Windows, вам абсолютно необходимо подписаться на компакт диски Microsoft Developer Network (MSDN), иначе даже не мечтайте о професси ональной разработке. Конечно, Microsoft поддерживает проект MSDN Online, од нако кое какую информацию можно найти только на CD. Чтобы узнать условия подписки на MSDN, посетите сайт msdn.microsoft.com/subscriptions.

Хочу обратить ваше внимание, что я участвовал в создании некоторых реко мендуемых мной программ и сотрудничал с авторами ряда указанных книг. Ду маю, с моей стороны было бы некрасиво скрывать это.

Книги

Во время разработки и отладки приложений я часто обращаюсь к следующим книгам. Настоятельно рекомендую их вам.

ПРИЛОЖЕНИE Б Ресурсы для разработчиков приложений .NET и Windows

697

 

 

Разработка ПО

Steve McConnell. Code Complete. — Microsoft Press, 1993

Лучшая книга по разработке ПО из тех, что когда либо попадались мне в руки. Каждый разработчик должен иметь ее и перечитывать каждый год. Я ежегод но перечитываю ее на протяжении вот уже девяти лет, и все еще узнаю много нового!

Steve McConnell. Rapid Development. — Microsoft Press, 1996

Эта книга научила меня управлять группами и планировать проекты.

Steve Maguire. Debugging the Development Process. — Microsoft Press, 1994 Отличное введение в методику разработки ПО, используемую в Microsoft. Micro soft — самая успешная компания по разработке ПО в мире, значит, они уж точно в этом что то понимают. Из этой книги можно многому научиться.

Jim McCarthy. Dynamics of Software Development. — Microsoft Press, 1995

В этой книге описаны интересные взгляды на разработку ПО с точки зрения менеджера, имеющего богатый опыт создания прекрасных программ. Джим приводит ряд полезных правил, подкрепленных реальным опытом, а не толь ко академическими рассуждениями.

Ed Sullivan. Under Pressure and On Time. — Microsoft Press, 20011

Эд — очень успешный руководитель проектов, у которого я позаимствовал большинство идей по поводу создания ПО. Эд рассматривает управление про ектами в реальном мире и рассказывает, как ему удается создавать слаженные команды, которые разрабатывают неизменно великолепные продукты в уста новленные сроки. Хочу также отметить, что предисловие к этой книге напи сал один из самых сексуальных разработчиков2 современности.

Christopher Duncan. The Career Programmer: Guerilla Tactics for an Imperfect World. — APress, 2002

Во всех книгах подобного рода разработка ПО рассматривается только с точ ки зрения руководителя. Наконец хоть кто то позаботился о рядовых програм мистах! Крис описывает тактику и методы, позволяющие довести работу до успешного завершения, даже когда ваш начальник болван.

Michael Howard and David LeBlanc. Writing Secure Code, Second Edition. — Microsoft Press, 20023

Нет ни одного человека, который не придавал бы огромного значения собствен ной безопасности, поэтому все разработчики должны иметь эту книгу в своей коллекции. В ней приводится не только фантастическое введение в сам пред мет, но и огромное число реальных рекомендаций и примеров того, что нуж но делать при создании программ.

Steve Krug. Don’t Make Me Think: A Common Sense Approach to Web Usability. — New Riders, 2000

Все считают себя экспертами по пользовательскому интерфейсу; особенно это заметно при перемещении вверх по служебной лестнице. В этой великолеп

1 Салливан Э. Время — деньги. — М.: Русская Редакция, 2002. — Прим. перев.

2 Предисловие написано самим Джоном Роббинсом. — Прим. перев.

3 Ховард М., Лебланк Д. Защищенный код. — М.: Русская Редакция, 2003. — Прим. перев.

698 ЧАСТЬ V Приложения

ной книге обсуждается разработка реального web сайта и описываются мето ды, позволяющие гарантировать, что созданный вами интерфейс не вызовет недоумения.

Philip Greenspun. Philip and Alex’s Guide to Web Publishing. — Morgan Kaufmann, 1999

Если вы проектируете web сайт, то просто обязаны прочитать эту книгу. Ве роятно, не все в ней вызовет у вас согласие (в моем случае это определенно так), но в ней приводится одно из наиболее основательных обсуждений того, как оставить у пользователей благоприятное впечатление и вызвать у них же лание посетить ваш сайт еще раз. Кроме того, в книге прекрасные фотогра фии. Мой отец, художник с мировым именем, никак не может понять, почему мои книги не выглядят так же хорошо.

Chris Loosley and Frank Douglas. High Performance Client/Server. — Wiley, 1998 Отличная книга по разработке высокопроизводительных приложений. Особо стоит отметить великолепное обсуждение архитектур высокоскоростных систем.

Dr. International. Developing International Software, Second Edition. — Microsoft Press, 2003

Слышали старую шутку? Человека, знающего три языка, называют трехъязыч ным, два — двуязычным, а если кто то знает только один язык, то это амери канец. От продаж своих программ вне США Microsoft получает 60% дохода, и вы тоже можете достигнуть этого, если выполните необходимые действия. В данной книге описана разработка интернациональных приложений с уче том всех технологий Microsoft.

Отладка и тестирование

Brian W. Kernighan and Rob Pike. The Practice of Programming. — Addison Wesley, 1999 Прекрасное обсуждение разработки, отладки и тестирования программ.

Steve Maguire. Writing Solid Code. — Microsoft Press, 1993)

Эта книга посвящена преимущественно программированию на C, но в ней можно найти полезные советы по определению интерфейсов и избежанию ряда неприятных проблем языка C.

Rex Black. Managing the Testing Process. — Microsoft Press, 1999

Чтобы эффективней разрабатывать программы, нужно уметь правильно их тестировать. Прочитав эту великолепную книгу, вы измените взгляды на раз работку программ и взаимодействие с группами контроля качества.

Jonathan B. Rosenberg. How Debuggers Work: Algorithms, Data Structures, and Architecture. — John Wiley & Sons, 1996

Отличное введение в работу отладчиков и некоторые вопросы, которые нуж но рассматривать при создании отладчика.

Everett N. McKay and Mike Woodring. Debugging Windows Programs: Strategies, Tools, and Techniques for Visual C++ Programmers. — Addison Wesley, 2000

Сразу же после первого издания книги, которую вы держите в руках, вышел труд Эверетта и Майка. Фантастическая книга! Хотел бы я, чтобы некоторые

ПРИЛОЖЕНИE Б Ресурсы для разработчиков приложений .NET и Windows

699

 

 

из содержащихся в ней идей, например, относительно размышлений об отладке, принадлежали мне.

Технологии .NET

Jeffrey Richter. Applied Microsoft .NET Framework Programming. — Microsoft Press, 20024

Jeffrey Richter and Francesco Balena. Applied Microsoft .NET Framework Program ming in Microsoft Visual Basic .NET. — Microsoft Press, 2002

Просто лучшее введение во внутренние механизмы .NET. В этих книгах вы узнаете все то, что обещают, но, к сожалению, не могут объяснить авторы ты сяч книг типа «Введение в .NET».

Jeff Prosise. Programming Microsoft .NET. — Microsoft Press, 20025

После книги Джеффри Рихтера было бы просто прекрасно прочитать и этот труд. Каким то образом Джеффу удалось угадать все вопросы, которые у меня когда либо возникали по поводу Microsoft ASP.NET, и ответить на них в своей великолепной книге.

Adam Nathan. .NET and COM: The Complete Interoperability Guide. — Sams, 2002 Если ваше приложение .NET должно выходить за пределы CLR и взаимодейство вать с суровым большим миром приложений Windows или COM, в этой книге вы найдете все, что нужно для правильной реализации такого взаимодействия.

Dino Esposito. Applied XML Programming for Microsoft .NET. — Microsoft Press, 2002

XML сегодня повсюду, и книга Дино — отличное руководство по использова нию XML в Microsoft .NET.

Jimmy Nilsson. .NET Enterprise Design with Visual Basic .NET and SQL Server 2000. — Sams, 2002

Книга Джимми относится к тем немногим изданиям, которые посвящены во просам разработки реальных программ. Читать ее и узнавать о средствах ре шения проблем — одно удовольствие.

Microsoft Application Consulting and Engineering (ACE) Team. Performance Testing Microsoft .NET Web Applications. — Microsoft Press, 2003

Выполнение многих задач программирования платформа .NET берет на себя, но за быстродействие программы отвечаете все же вы. Эта книга — отличное введение в тестирование производительности.

Serge Lidin. Inside Microsoft .NET IL Assembler. — Microsoft Press, 2002 Вероятно, вам никогда не придется программировать на IL на профессиональ ном уровне, однако осознавать, что вы это умеете, очень приятно.

4Рихтер Дж. Программирование на платформе Microsoft .NET Framework. — М.: Рус ская Редакция, 2002. — Прим. перев.

5Просиз Дж. Программирование для Microsoft .NET. — М.: Русская Редакция, 2003. —

Прим. перев.

700 ЧАСТЬ V Приложения

Языки C/C++

Brian W. Kernighan and Dennis M. Ritchie. The C Programming Language, Second Edition. — Prentice Hall, 1988

Классическое руководство по программированию на C. Кроме того, я считаю эту книгу образцом того, как надо писать книги по программированию.

Neill Graham. Learning C++. — McGraw Hill, 1991

По этой книге я изучал C++. В отличие от других книг по C++ для начинаю щих «Learning C++» лаконична, понятна и попадает точно в цель.

Mark Nelson. C++ Programmer’s Guide to the Standard Template Library. — IDG Books, 1995

Standard Template Library вызывает у меня очень противоречивые чувства. К счастью, в своей книге Марк объясняет и иллюстрирует на примерах луч шие способы использования этой библиотеки.

ОС Windows и технологии Windows

Charles Petzold. Programming Windows, Fifth Edition. — Microsoft Press, 1999

Водной этой книге вы найдете все, что нужно знать о самых фундаменталь ных аспектах работы приложений Windows. Люди, которые обращаются ко мне за помощью, могли бы решить много проблем самостоятельно, если бы лучше понимали, как обработка сообщений, интерфейс графических устройств (GDI) и другие компоненты работают на уровне Microsoft Win32.

Jeffrey Richter. Programming Applications for Microsoft Windows, Fourth Edition. — Microsoft Press, 1999

Вданной книге рассматриваются все уникальные аспекты разработки программ Win32. Главы, посвященные DLL, потокам, синхронизации и структурной об работке исключений, — самые лучшие из известных мне описаний соответ ствующих вопросов; вся эта информация непосредственно связана с быстро той и эффективностью отладки.

Jeff Prosise. Programming Windows with MFC, Second Edition. — Microsoft Press, 1999

Это подробный курс программирования с использованием библиотеки Microsoft Foundation Class (MFC). Если вы работаете с MFC, то обязательно должны иметь эту книгу.

Paul Dilascia. Windows++: Writing Reusable Windows Code in C++. — Addison Wesley, 1992

Вотличие от других книг по программированию, основанных на детских при мерах, здесь разрабатывается нетривиальная и вполне жизнеспособная биб лиотека классов C++ для Windows. Я сам эффективнее всего учусь на приме рах, и эта книга научила меня думать в терминах объектов.

Don Box. Essential COM. — Addison Wesley, 1998

Вокне Disassembly («недвусмысленный режим») интерфейс COM выглядит как указатель на массив указателей, поэтому модель COM кажется довольно про стой. Однако на самом деле COM настолько сложнее, чем обычный указатель, и в то же время настолько фундаментальна, что, если вы рассчитываете пра

ПРИЛОЖЕНИE Б Ресурсы для разработчиков приложений .NET и Windows

701

 

 

вильно разрабатывать и отлаживать свой код, вам обязательно нужно понять

ее работу. Книга Дона — прекрасный старт на пути к COM просветлению.

David A. Solomon and Mark E. Russinovich. Inside Microsoft Windows 2000, Third Edition. — Microsoft Press, 20006.

Эта книга является официальной «общей картиной» ядра Microsoft Windows 2000. Она адресована скорее разработчикам драйверов устройств, однако опи сание совместной работы различных компонентов Windows 2000 будет полез ным любому программисту.

Matt Pietrek. Windows 95 System Programming Secrets. — IDG Books, 1995 Книга Мэтта уже давно продана, но вам по настоящему следует попытаться найти ее. В Microsoft Windows 95/98 отладка чего либо более сложного, чем простое нарушение доступа, часто связана с очень неприятными впечатлениями; в пер вую очередь это объясняется тем, что Windows 95 и Windows 98 — гибридные 16/32 разрядные ОС. Значительная часть материала этой книги, например, глава, посвященная формату файлов Portable Executable (PE), в равной степени при менима и к Windows 2000.

Brent Rector and Chris Sells. ATL Internals. — Addison Wesley, 1999

Библиотека Active Template Library (ATL) позволяет создавать самые компакт ные и быстрые COM объекты. Данная книга поможет вам задействовать все преимущества ATL.

Keith Brown. Programming Windows Security. — Addison Wesley, 2000

Просто лучшая книга по программированию защищенных программ для Win dows.

Jeffrey Richter and Jason D. Clark. Programming Server Side Application for Microsoft Windows 2000. — Microsoft Press, 1999

Если вы работаете над неуправляемыми серверными приложениями, обязатель но купите эту книгу. В разделе, посвященном масштабируемому вводу/выводу, приводится самое лучшее описание этого вопроса.

Процессоры Intel и аппаратные средства ПК

Andrew S. Tanenbaum. Structured Computer Organization, Fourth Edition. — Prentice Hall, 1998

Великолепное введение в архитектуру компьютеров. При отладке проблем я очень часто обращаюсь к этой книге. В ней есть ряд опечаток и технических ошибок, но если вас это не смущает, вы будете рады, что прочитали ее.

Документация по процессорам Intel

Intel предоставляет бесплатный доступ к документации по своим процессорам. Если вы всерьез занимаетесь отладкой, то найдете приведенные в ней сведе ния очень полезными. Загрузить руководства в формате PDF можно с сайта Intel по адресу developer.intel.com/design/litcentr/index.htm. Кроме того, вы можете заказать у Intel эти же руководства в бумажной форме.

6Соломон Д., Русинович М. Внутреннее устройство Microsoft Windows 2000. — М.: Рус ская Редакция, 2001. — Прим. перев.

702 ЧАСТЬ V Приложения

Hans Peter Messmer. The Indispensable PC Hardware Book, Fourth Edition. — Addison Wesley, 2001

Самое лучшее описание аппаратных средств ПК. Если вам нужно работать с аппаратурой на низком уровне, эта книга просто не имеет цены.

Программные средства

Visual Assist компании Whole Tomato (www.wholetomato.com)

Отличная надстройка для Microsoft Visual Studio .NET, которая расширяет функ ции редактора и включает настоящую технологию IntelliSense и другие усовер шенствованные возможности редактирования.

Source Insight компании Source Dynamics (www.sourceinsight.com)

Если вам нужно видеть совместную работу компонентов крупных программ C++, C# или Java, вы можете использовать это средство навигации по исходному коду.

DevPartner компании Compuware (www.compuware.com/products/numega) Этот пакет включает в себя утилиты BoundsChecker (обнаружение ошибок), TrueTime (профилирование), TrueCoverage (определение покрытия кода тес тами), CodeReview (статический анализ) и Distributed Analyzer (кросс машин ный анализ). Все утилиты поддерживают работу как с неуправляемым кодом, так и с программами .NET.

C Cover компании Bullseye Testing Technology (www.bullseye.com) Фантастическое средство для определения покрытия тестами неуправляемого кода C++.

4NT компании JPSoft (www.jpsoft.com)

Прекрасная командная оболочка для ОС Windows. В ней даже есть отладчик командных файлов! При установке новой ОС я всегда устанавливаю эту про грамму в первую очередь.

Anakrino Джея Фримена (Jay Freeman) (www.saurik.com/net/exemplar) Самый простой способ лучше понять .NET — декомпилировать ее!

Reflector Лутца Родера (Luts Roeder) (www.aisto.com/roeder/DotNet) Улучшенный вариант ILDASM.

Demeanor for .NET компании WiseOwl (www.wiseowl.com)

Великолепный обфускатор кода, написанный Брентом Ректором (Brent Rector).

SOAPscope компании MindReef (www.mindreef.com)

Если вы хотите знать все, что происходит с вашими web сервисами, нет ниче го лучше, чем SOAPscope.

VMWare (www.vmware.com)

Вместо того чтобы устанавливать в тестовом отделе 300 компьютеров, купите несколько мощных серверов и запустите на них VMWare. Я знаю несколько организаций, которые благодаря VMWare сэкономили огромные деньги на покупке оборудования и при этом значительно повысили покрытие кода сво их программ тестами.

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