Анализ на изхвърляне на памет

Практически основи за отстраняване на грешки в приложенията на Windows

Издадена е книга (на английски):

Смятам също да го публикувам на руски.

Сертифициран съм във вътрешността на Windows

Пътят беше дълъг. Първи полет до Щатите, Редмънд за участие в подготовката на изпита. След това чакаме бета изпита. След това в Ирландия с влак от Дъблин до Корк за изпита в един от тестовите центрове. Днес получих поздравително писмо за успешното полагане на изпита и като се регистрирах на уебсайта на MCP, изградих това лого:

изхвърляне

Връзка към изискванията за изпит:

Файлов сървър на Citrix Internet Symbol

Използвайте този път:

Подробностите са описани в следната статия:

Антология за анализ на изхвърляне на памет, том 2

Пуснат е вторият том на антологията (на английски):

Дъмпинги на памет за манекени (част 5)

В тази част ще се опитам да обясня символните файлове. Те обикновено се наричат ​​PDB файлове, тъй като техните имена на файлове имат разширението .PDB. Старите символни файлове също могат да имат разширение .DBG. PDB файловете са необходими за правилно четене на сметищата на паметта. Без PDB файлове, изваждането на паметта е прост набор от числа, съдържанието на паметта без никаква интерпретация. PDB файловете помагат на инструменти и програми за отстраняване на грешки като WinDbg да интерпретират данните правилно и да ги конвертират в четим формат. Грубо казано, PDB файловете съдържат съответствия между числата и тяхната интерпретация, изразени в кратки редове текст:

изпрати корекцията

Тъй като тези съпоставяния се променят, когато инсталираме корекция или закърпена версия на програмата на компютъра и имаме нов файл за изхвърляне на паметта, се нуждаем от нови PDB файлове, които съответстват на променените DLL компоненти или драйвери.

0: 000> .symfix
Не е дадено хранилище надолу по веригата, използвайки C: \ Program Files \ Инструменти за отстраняване на грешки за Windows \ sym

0: 000> .sympath
Пътят за търсене на символи е: SRV ** http: //msdl.microsoft.com/download/symbols

0: 000> .symfix c: \ websymbols

0: 000> .sympath
Пътят за търсене на символи е: SRV * c: \ websymbols * http: //msdl.microsoft.com/download/symbols

На бележка: Използвайте тази връзка за бързо инсталиране на дебъгера на WinDbg и напомняне за пътищата и командите за зареждане на символи:

Дъмпинги на памет за манекени (част 4)

Когато приложение (процес) се срине, то често изчезва. Когато даден процес виси, приложението все още е в RAM: можем да го видим например в диспечера на задачите, но не реагира на потребителски команди или други заявки като пинг на TCP/IP порт. IP порт). Ако имаме срив на операционната система, тогава наблюдаваме син екран на смъртта (BSOD) и/или рестартиране на системата. Когато системата увисне, всичко замръзва.

Висящите приложения или система могат лесно да бъдат обяснени, като се разглеждат взаимодействията между приложения или системни компоненти като съобщения. Един компонент изпраща съобщение до друг и чака отговор. Някои компоненти са критични, като например регистъра за конфигурация и настройки. Следващата снимка илюстрира често срещана ситуация на замразяване, когато регистърът не реагира. Тогава всяко приложение, което иска свои или системни настройки, спира да работи.

памет

Много честа причина за замръзване е т.нар задънена улица (блокировка), когато две приложения (по-точно техните изчислителни пътеки, нишки) взаимно се изчакват взаимно. Ето аналогия с блокиран път:

изхвърляне

За да видим какво е причинило замръзването в приложението (процеса) или операционната система, се нуждаем от изхвърляне на памет. Как да го получим, ако приложение или услуга са замразени? Докато се дават връзки към все още не преведени статии на английски език.

Как да получим дъмп на памет, ако системата е замразена?

За повечето системни замръзвания е достатъчно да изберете дъмп на паметта на ядрото в контролния панел \ Система \ Разширени \ Стартиране и възстановяване. Дъмпингите на ядрото са по-малки и по-малко податливи на повреди и отрязване поради недостатъчен размер на файла за пейджинг Ако установите, че трябва да видите какво се случва в приложенията, тогава ще трябва да изберете пълен дъмп на паметта.

Английски за софтуерни инженери (част 1)

Отдавна имах мечта да започна да пиша за английски и да използвам езика за дизайн UML (Unified Modeling Language) за илюстрации. След дълги години работа в чужбина и четене на стотици книги на английски, включително лингвистична литература, започнах да забелязвам, че познавам английската граматика по-добре от руския. Днес ще ви разкажа за първия урок, който научих през 90-те години по време на работа, изпращайки нови версии на програми всяка седмица на американски клиенти. Става въпрос за Present Perfect Tense. Използва се, когато искате да подчертаете, че дадено действие току-що се е случило. Представете си, че току-що изпратихме поправка или нова версия. Ако напишем „изпратих корекцията“ или „изпратих новата версия“, това означава, че сте я изпратили преди време (минало време, минало време) и много неща може да се променят оттогава. Но ако напишем „I- Ве изпрати корекцията “(I имат изпрати корекцията) или „I- Ве изпрати новата версия “(I имат изпрати новата версия), това ще означава, че го направихме точно сега, буквално преди да сме писали за него. Споменаването, че току-що направихме това, може да бъде подсилено: „Аз- Ве просто изпрати корекцията “(току-що изпратих корекция на грешка).

Разликата между двете времена може да бъде илюстрирана в следващите две диаграми на последователността. Използвам английски език в заглавията като допълнително помощно средство за обучение.

анализ

Когато контекстът е ясен, Past Tense може да се използва вместо Present Perfect Tense. Мнозина го правят, особено в щатите. Според моите наблюдения използването на Present Perfect Tense е по-специфично за европейските англоговорящи страни. Ако се съмнявате в правилността на изречение или фрагмент, използвайте Google за сравнение на честотата:

„Изпратих“ - 1 840 000 пъти
„Изпратих“ - 23 600 000 пъти
„Изпращам“ - 14 700 000 пъти (определено възнамерявам да изпратя ...)
„Аз съм изпрати“- 60 900 пъти (грешка във глаголна форма)

или търсете с пълна фраза:

„Изпратих поправката“ - 7 пъти
„Изпратих поправката“ - 42 пъти
„Изпращам корекцията“ - 5 пъти (определено възнамерявам да изпратя корекция)
„Аз съм изпрати корекцията “- 1 път (грешка във глаголната форма)

Ако споменете точното време, тогава трябва да използвате Past Tense: „Изпратих корекцията вчера”(Изпратих корекция на грешки вчера).

В следващата част ще говорим за формите на глагола.