Что такое debugging symbols

Symbols for Windows debugging (WinDbg, KD, CDB, NTSD)

Symbol files hold a variety of data which are not actually needed when running the binaries, but which could be very useful in the debugging process.

Symbols can include the name, type (if applicable), the address or register where it is stored, and any parent or child symbols. Examples of symbols include variable names (local and global), functions, and any entry point into a module.

The debugger gets its information about symbols from symbol files, which are located on the local file system or loaded from a remote symbol server. When using a symbol server, the debugger will automatically use the correct version of the symbol file to match the module in the target.

Symbols for the Windows debuggers (WinDbg, KD, CDB, and NTSD) are available from a public symbol server via the internet.

Symbols can be loaded automatically using the .symfix (Set Symbol Store Path) command, as long as you have access to the internet while your debugger is running. Then use the .reload (Reload Module) command to load the symbols.

If you are performing user-mode debugging, you will need symbols for your target application. If you are performing kernel-mode debugging, you will need symbols for the driver you are debugging, as well as the Windows public symbols.

These topics explain how to access symbols during a debugging session, how to control the debugger’s symbol options and symbol matching.

These topics explain what symbols are, as well as describe WinDbg support for Portable PDB symbols.

For additional detail on working with symbols refer to these pages.

If you simply want to configure your debugger to access symbols for your own programs and for Windows, you may find it quicker to read the less-detailed introductory topics Symbol Path and Microsoft public symbol server. Use the Use !sym noisy command to display additional detail as symbols are loaded to troubleshoot issues with symbols.

Источник

Specify symbol (.pdb) and source files in the Visual Studio debugger (C#, C++, Visual Basic, F#)

Program database (.pdb) files, also called symbol files, map identifiers and statements in your project’s source code to corresponding identifiers and instructions in compiled apps. These mapping files link the debugger to your source code, which enables debugging.

When you build a project from the Visual Studio IDE with the standard Debug build configuration, the compiler creates the appropriate symbol files. This article describes how to manage symbol files in the IDE, for example:

For a detailed explanation of symbol files, see the following:

How symbol files work

The .pdb file holds debugging and project state information that allows incremental linking of a Debug configuration of your app. The Visual Studio debugger uses .pdb files to determine two key pieces of information while debugging:

Symbol files also show the location of the source files, and optionally, the server to retrieve them from.

The debugger only loads .pdb files that exactly match the .pdb files created when an app was built (that is, the original .pdb files or copies). This exact duplication is necessary because the layout of apps can change even if the code itself has not changed. For more information, see Why does Visual Studio require debugger symbol files to exactly match the binary files that they were built with?

To debug code outside your project source code, such as Windows code or third-party code your project calls, you must specify the location of the external code’s .pdb files (and optionally, the source files), which must exactly match the builds in your app.

Where the debugger looks for symbols

When you debug a project in the Visual Studio IDE, the debugger automatically loads symbol files that it can find by default.

When debugging managed code on a remote device, all symbol files must be located either on the local machine, or in a location specified in the debugger options.

The debugger searches for symbol files in the following locations:

The project folder.

The location that is specified inside the DLL or the executable (.exe) file.

By default, if you have built a DLL or an .exe file on your computer, the linker places the full path and filename of the associated .pdb file in the DLL or .exe file. The debugger checks to see if the symbol file exists in that location.

The same folder as the DLL or .exe file.

Any locations specified in the debugger options for symbol files. To add and enable symbol locations, see Configure symbol locations and loading options.

Any local symbol cache folder.

Specified network, internet, or local symbol servers and locations, such as the Microsoft Symbol Servers if selected. Visual Studio can download debugging symbol files from symbol servers that implement the symsrv protocol. Visual Studio Team Foundation Server and the Debugging Tools for Windows are two tools that can use symbol servers.

Symbol servers you might use include:

Symbol servers on an internal network or on your local machine: Your team or company can create symbol servers for your own products, and as a cache for symbols from external sources. You might have a symbol server on your own machine.

Third-party symbol servers: Third-party providers of Windows applications and libraries can provide access to symbol server on the internet.

If you use a symbol server other than the public Microsoft Symbol Servers, make sure that the symbol server and its path are trustworthy. Because symbol files can contain arbitrary executable code, you can be exposed to security threats.

Configure location of symbol files and loading options

The debugger checks various locations for symbols by default. See Where the debugger looks for symbols.

On the Tools > Options > Debugging > Symbols page, you can:

To specify symbol locations and loading options:

In Visual Studio, open Tools > Options > Debugging > Symbols (or Debug > Options > Symbols).

Under Symbol file (.pdb) locations,

To use the Microsoft Symbol Servers or NuGet.org Symbol Server, select the checkbox.

To add a new symbol server location,

Что такое debugging symbols. Смотреть фото Что такое debugging symbols. Смотреть картинку Что такое debugging symbols. Картинка про Что такое debugging symbols. Фото Что такое debugging symbols

Что такое debugging symbols. Смотреть фото Что такое debugging symbols. Смотреть картинку Что такое debugging symbols. Картинка про Что такое debugging symbols. Фото Что такое debugging symbols

Only the specified folder is searched. You must add entries for any subfolders that you want to search.

To add a new VSTS Symbol Server location,

To change the loading order for the symbol locations, use Ctrl+Up and Ctrl+Down, or the Up and Down arrow icons.

To edit a URL or path, double-click the entry, or select it and press F2.

To remove an entry, select it, and then select the icon.

(Optional) To improve symbol loading performance, under Cache symbols in this directory, type a local folder path that symbol servers can copy symbols to.

Do not place the local symbol cache in a protected folder, like C:\Windows or a subfolder. Use a read-write folder instead.

For C++ projects, if you have the _NT_SYMBOL_PATH environment variable set, it will override the value set under Cache symbols in this directory.

Specify the modules that you want the debugger to load from the Symbol file (.pdb) locations when it starts.

Select Load all modules, unless excluded (the default) to load all the symbols for all modules in the symbol file location, except modules you specifically exclude. To exclude certain modules, select Specify excluded modules, select the + icon, type the names of the modules to exclude, and select OK.

To load only modules you specify from the symbol file locations, select Load only specified modules. Select Specify included modules, select the + icon, type the names of the modules to include, and then select OK. The symbol files for other modules are not loaded.

Select OK.

Other symbol options for debugging

You can select additional symbol options in Tools > Options > Debugging > General (or Debug > Options > General):

Load dll exports (Native only)

Loads DLL export tables for C/C++. For details, see DLL export tables. Reading DLL export information involves some overhead, so loading export tables is turned off by default. You can also use dumpbin /exports in a C/C++ build command line.

Enable address level debugging and Show disassembly if source not available

Always shows the disassembly when source or symbol files are not found.

Что такое debugging symbols. Смотреть фото Что такое debugging symbols. Смотреть картинку Что такое debugging symbols. Картинка про Что такое debugging symbols. Фото Что такое debugging symbols

Enable source server support

Uses Source Server to help debug an app when there is no source code on the local machine, or the .pdb file does not match the source code. Source Server takes requests for files and returns the actual files from source control. Source Server runs by using a DLL named srcsrv.dll to read the app’s .pdb file. The .pdb file contains pointers to the source code repository, as well as commands used to retrieve source code from the repository.

You can limit the commands that srcsrv.dll can execute from the app’s .pdb file by listing the allowed commands in a file named srcsrv.ini. Place the srcsrv.ini file in the same folder as srcsrv.dll and devenv.exe.

Arbitrary commands can be embedded in an app’s .pdb file, so make sure to put only the commands you want to execute into a srcsrv.ini file. Any attempt to execute a command not in the srcsvr.ini file will cause a confirmation dialog box to appear. For more information, see Security Warning: Debugger Must Execute Untrusted Command.

No validation is done on command parameters, so be careful with trusted commands. For example, if you listed cmd.exe in your srcsrv.ini, a malicious user might specify parameters on cmd.exe that would make it dangerous.

Select this item and the child items you want. Allow source server for partial trust assemblies (Managed only) and Always run untrusted source server commands without prompting can increase the security risks.

Что такое debugging symbols. Смотреть фото Что такое debugging symbols. Смотреть картинку Что такое debugging symbols. Картинка про Что такое debugging symbols. Фото Что такое debugging symbols

Compiler symbol options

When you build a project from the Visual Studio IDE with the standard Debug build configuration, the C++ and managed compilers create the appropriate symbol files for your code. You can also set compiler options in code.

To set the compiler options for your build configurations in Visual Studio, see Set debug and release configurations.

.NET options

Build with /debug to create a .pdb file. You can build applications with /debug:full or /debug:pdbonly. Building with /debug:full generates debuggable code. Building with /debug:pdbonly generates .pdb files, but does not generate the DebuggableAttribute that tells the JIT compiler that debug information is available. Use /debug:pdbonly if you want to generate .pdb files for a release build that you do not want to be debuggable. For more information, see /debug (C# compiler options) or /debug (Visual Basic).

C/C++ options

A .pdb file for C/C++ is created when you build with /ZI or /Zi. In Visual C++, the /Fd option names the .pdb file the compiler creates. When you create a project in Visual Studio using the IDE, the /Fd option is set to create a .pdb file named

If you build your C/C++ application using a makefile, and you specify /ZI or /Zi without using /Fd, the compiler creates two .pdb files:

.pdb file stores all debug information for the project’s .exe file, and resides in the \debug subdirectory. The

.pdb files allow incremental updates. The linker also embeds the path to the .pdb files in the .exe or .dll file that it creates.

Use dumpbin /exports to see the symbols available in the export table of a DLL. Symbolic information from DLL export tables can be useful for working with Windows messages, Windows procedures (WindowProcs), COM objects, marshaling, or any DLL you don’t have symbols for. Symbols are available for any 32-bit system DLL. The calls are listed in the calling order, with the current function (the most deeply nested) at the top.

By reading the dumpbin /exports output, you can see the exact function names, including non-alphanumeric characters. Seeing exact function names is useful for setting a breakpoint on a function, because function names can be truncated elsewhere in the debugger. For more information, see dumpbin /exports.

Web applications

Set the web.config file of your ASP.NET application to debug mode. Debug mode causes ASP.NET to generate symbols for dynamically generated files and enables the debugger to attach to the ASP.NET application. Visual Studio sets this automatically when you start to debug, if you created your project from the web projects template.

Load symbols while debugging

You can use the Modules, Call Stack, Locals, Autos, or any Watch window to load symbols or change symbol options while debugging. For more information, see Get more familiar with how the debugger attaches to your app.

Work with symbols in the Modules window

During debugging, the Modules window shows the code modules the debugger is treating as user code, or My Code, and their symbol loading status. You can also monitor symbol loading status, load symbols, and change symbol options in the Modules window.

To monitor or change symbol locations or options while debugging:

Use the No Symbols Loaded/No Source Loaded pages

There are several ways for the debugger to break into code that does not have symbol or source files available:

When this happens, the debugger displays the No Symbols Loaded or No Source Loaded pages to help you find and load the necessary symbols or source.

Что такое debugging symbols. Смотреть фото Что такое debugging symbols. Смотреть картинку Что такое debugging symbols. Картинка про Что такое debugging symbols. Фото Что такое debugging symbols

To use the No Symbols Loaded document page to help find and load missing symbols:

If the debugger finds the .pdb file after you execute one of the options, and can retrieve the source file using the information in the .pdb file, it displays the source. Otherwise, it displays a No Source Loaded page that describes the issue, with links to actions that might resolve the issue.

To add source file search paths to a solution:

You can specify the locations the debugger searches for source files, and exclude specific files from the search.

Select the solution in Solution Explorer, and then select the Properties icon, press Alt+Enter, or right-click and select Properties.

Select Debug Source Files.

Что такое debugging symbols. Смотреть фото Что такое debugging symbols. Смотреть картинку Что такое debugging symbols. Картинка про Что такое debugging symbols. Фото Что такое debugging symbols

Under Directories containing source code, type or select source code locations to search. Use the New Line icon to add more locations, the Up and Down arrow icons to reorder them, or the X icon to delete them.

The debugger searches only the specified directory. You must add entries for any subdirectories that you want to search.

Under Do not look for these source files, type the names of source files to exclude from search.

Select OK or Apply.

Источник

Symbols and Symbol Files

Symbol files hold a variety of data which are not actually needed when running the binaries, but which could be very useful in the debugging process.

Typically, symbol files might contain:

Function names and the addresses of their entry points

Frame pointer omission (FPO) records

Each of these items is called, individually, a symbol. For example, a single symbol file Myprogram.pdb might contain several hundred symbols, including global variables and function names and hundreds of local variables. Often, software companies release two versions of each symbol file: a full symbol file containing both public symbols and private symbols, and a reduced (stripped) file containing only public symbols. For details, see Public and Private Symbols.

When debugging, you must make sure that the debugger can access the symbol files that are associated with the target you are debugging. Both live debugging and debugging crash dump files require symbols. You must obtain the proper symbols for the code that you wish to debug, and load these symbols into the debugger.

Windows Symbols

The Windows operating system was built in two versions. The free build (or retail build) has relatively small binaries, and the checked build (or debug build) has larger binaries, with more debugging symbols in the code itself. Checked builds were available on older versions of Windows before Windows 10, version 1803. Each of these builds had its own symbol files. When debugging a target on Windows, you must use the symbol files that match the build of Windows on the target.

The following table lists several of the directories which exist in a standard Windows symbol tree:

Источник

Microsoft Windows debugging symbols можно ли удалить?

Debug Dump Files — что это такое и можно ли удалить?

Что такое debugging symbols. Смотреть фото Что такое debugging symbols. Смотреть картинку Что такое debugging symbols. Картинка про Что такое debugging symbols. Фото Что такое debugging symbols

Приветствую друзья! Не все файлы можно удалять в Windows. Да, есть временные файлы, которые называются temp-файлы, для них даже существует специальная папка Temp (%temp%). Еще есть log-файлы, в которых содержится информация о работе программы, как об успешных операциях, так и об ошибках. А еще есть файлы, которые содержат много специфичной информации именно об ошибке — сегодня о таких мы поговорим.

Служебные файлы, созданные отладчиком Windows. Содержат данные об условиях, при которых произошла ошибка/сбой.

Отвечу коротко — если компьютер работает нормально, без глюков — можно спокойно удалить. Но даже если есть глюки — 95% что эти файлы так и останутся бесполезными.

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

Debug Dump Files это что-то вроде снимка системы на момент ошибки. Могут иметь расширение *.dmp, они могут быть скрытыми, в них может быть также содержимое оперативной памяти на момент ошибки.

Например при ошибке синий экран — тоже создается дамп-файл, анализ которого можно выполнить в утилите BlueScreenView:

Но опять же — провести анализ, выявить причину может только опытный пользователь.

Debug Dump Files — можно ли удалить?

Как мы уже выяснили — да. Только не стоит удалять вручную, лучше это дело доверить встроенному компоненту очистки системы.

Чтобы удалить Debug Dump Files, а также другие мусорные данные:

Также очистку диска можно выполнить из свойств диска — правой кнопкой по диску (в окне Мой компьютер) > свойства > на вкладке Общие будет кнопка Очистка диска:

Это Windows 7, в Windows 10 должно быть все примерно так, но почему-то лично у меня этой кнопки нет. Но команда cleanmgr при этом работает.

Собственно окошко с вкладкой, где можно выбрать что удалять:

Поверьте — встроенная чистилка мусора пожалуй самая безопасная из всех чистилок. Точно к ошибкам не приведет.

Иногда Debug Dump Files могут занимать прилично много места, поэтому конечно их стоит удалить:

Также, если я не ошибаюсь, то в CCleaner есть аналогичная опция — Memory Dumps и возможно что это тоже самое что и Debug Dump Files:

Но если вы неопытный пользователь, то советую вам чистить систему только встроенным инструментом (cleanmgr).

Описание некоторых пунктов из очистки

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

Debugging: Развертывание сервера отладочной информации

Что такое debugging symbols. Смотреть фото Что такое debugging symbols. Смотреть картинку Что такое debugging symbols. Картинка про Что такое debugging symbols. Фото Что такое debugging symbols

Копая залежи документов на своем рабочем компе обнаружил инструкцию по развертыванию сервера отладочной информации, которую писал два-три года назад. Попробую представить её хабросообществу. Данная инструкция будет полезна C++ разработчикам под Windows, которые хотят использовать отладку релизных версий своего продукта (удаленно и напрямую, на своих компах и компах тестировщиков), а также делать разбор крашдампов (postmortem debugging).

1. Подготовка окружения

Для развертывания хранилища отладочных сиволов понадобится: Следует установить дистрибутив Debugging Tools For Windows (будем считать, что дистрибутив установлен в папку “C:\Program Files\Debugging Tools For Windows”), и установить все дистрибутивы отладочных символов операционных систем в какую либо папку (будем считать, что они установлены в папку “C:\TempSymbols”).

2. Организация хранилища отладочной информации

Хранилище символов будем организовывать используя сервер отладочной информации symsrv.dll компании Microsoft. Для этого создадим папку для хранилища символов, например C:\Symbols. Далее следует установить на неё права на чтение для любых пользователей компьютера. Следующим шагом станет добавление файлов отладочных символов в хранилище. Для этого используем программу “symstore.exe” из комплекта Debugging Tools For Windows. Выполним следующую команду:

symstore add /r /3 /f c:\TempSymbols\*.* /s c:\Symbols /compress

данная команда пройдет по всем вложеным папкам каталога “c:\TempSymbols” и скопирует оттуда бинарные файлы и файлы с отладочной информацией в трёхуровневое хранилище символов расположенное в папку “C:\Symbols”. Архивирует их и создаст индексные файлы для ускорения доступа и хранения информации о транзакциях доступа на изменение хранилища. Описание ключей этой команды:

Команда будет выполнятся достаточно долго и результатом её выполнения будет создание хранилища отладочной информации в папке “C:\Symbols”. После данного этапа папку “C:\TempSymbols” можно удалить.

3. Организация доступа к хранилищу отладочной информации через протокол http

На данном этапе следует настроить Internet Information Services на предоставление доступа к хранилищу. Вначале следует создать виртуальную папку:

Далее следует настроить типы MIME.

4. Инсталляция прокси-фильтра для обновления символов через интернет

Прокси-фильтр нужен для того чтобы отладчик не нешедший необходимые ему файлы отладочных символов попытался взять из из публичного хранилища Microsoft, тем самым выполнив обновление хранилища символов. Прокси фильтр предоставляемый компанией Microsoft в наборе Debugging Tools For Windows является ISAPI расширением и находится в каталоге “C:\Program Files\Debugging Tools For Windows\symproxy”. Установим прокси фильтр:

Настроим IIS на работу с прокси-фильтром:

Запустим файл “iisreset.exe” чтобы рестартовать IIS с новыми настройками.

5. Настройка параметров прокси сервера для symproxy.dll

В Debugging Tools For Windows есть недочет, связанный с тем, что “symproxy.dll” не перенаправляет вызовы на получение сжатых файлов отладочных символов на сайт Microsoft если “symproxy.dll” работает с интернетом напрямую (без прокси сервера). Для того чтобы устранить данный дефект необходимо поставить локальный прокси сервер и с помощью утилиты “proxycfg.exe” настроить систему на работу с прокси сервером.

6. Настройка клиентских компьютеров на работу с сервером отладочной информации

На каждом клиентском компьютере (компьютере разработчика) следует создать папку для кеширования символов, например “C:\LocalSymbols”. Установить дистрибутив Debugging Tools For Windows и создать переменные окружения:

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

Резюме

Итак, опишу полученый результат. У нас теперь есть сервер, на котором находятся отладочные символы операционных систем и некоторых библиотек и продуктов Microsoft. При этом если идет к серверу обращение на получение символов какой-то новой версии софта, то этот запрос будет переадресован на сайт Microsoft, символы будут скачаны оттуда и лягут на ваш сервер.

На компьютерах девелоперов у вас будет организован локальный репозиторий символов, которые будут скачиваться с вашего сервера символов по требованию отладчика (Visual Studio, WinDbg и т.п.). Для полноты работы символьного сервера вам остается только добавить в вашу систему сборки:

Заключение

Данная инструкция, как я и говорил, была написана 2-3 года назад, поэтому там фигурирует компьютер с Win2003, думаю вам не составит труда по аналогии развернуть сервер символов на Win2008 и последней версии IIS. Да и виртуалки, на которой можно было бы снять скриншоты настроки, тоже не оказалось. Но описание достаточно детальное, поэтому думаю что вы разберетесь.

Возможно проблема описанная в пункте 5 уже не актуальна, я не проверял.

Более детальную информацию по работе с серверами отладочной информации можно почерпнуть их хелп файла Debugging Tools For Windows, для затравки скажу что ещё можно привязать ваш сервер отладочной информации с сервером хранения исходников, и тогда при разборе крашдампа вы сможете видеть не только стек падения программы, но и место в исходниках, валидных на момент сборки.

Debugging tools for windows использование. Windows Debugging Tools: диагностика и исправление BSOD. Добавление символов во время отладки

Что такое debugging symbols. Смотреть фото Что такое debugging symbols. Смотреть картинку Что такое debugging symbols. Картинка про Что такое debugging symbols. Фото Что такое debugging symbols

Для выявления причин возникновения синих экранов (BSOD) требуется произвести анализ дампа памяти. В подавляющем большинстве случаев достаточно минидампа, который создается системой при критических ошибках.
В этой статье содержится пошаговая инструкция по установке и настройке WinDBG — мощного средства отладки, позволяющего выявить истинную причину возникновения BSOD.

Шаг 2 — Установка WinDBG

Для проведения анализа дампов памяти вам понадобится установить отладчик WinDBG, который входит в состав пакета Windows SDK. На момент написания статьи последние доступные версии Windows SDK:

Шаг 3 — Сопоставление файлов.dmp с WinDBG

Для упрощения процедуры чтения и анализа дампов памяти выполните сопоставление файлов.dmp с WinDBG. Это позволит открывать файлы дампов из проводника сразу в WinDBG минуя его предварительный запуск.

Шаг 4 — Настройка сервера символов для получения файлов символов отладки

Установка и первичная настройка WinDBG завершена. Для того, чтобы изменить его внешний вид можете перейти в меню View — настройки шрифтов вы найдете выбрав пункт Font, а настройки окон консолей в Options.

В момент критического сбоя операционная система Windows прерывает работу и показывает синий экран смерти (BSOD). Содержимое оперативной памяти и вся информация о возникшей ошибке записывается в файл подкачки. При следующей загрузке Windows создается аварийный дамп c отладочной информацией на основе сохраненных данных. В системном журнале событий создается запись о критической ошибке.

Внимание! Аварийный дамп не создается, если отказала дисковая подсистема или критическая ошибка возникла на начальной стадии загрузки Windows.

Типы аварийных дампов памяти Windows

На примере актуальной операционной системы Windows 10 (Windows Server 2016) рассмотрим основные типы дампов памяти, которые может создавать система:

Как включить создание дампа памяти в Windows?

С помощью Win+Pause откройте окно с параметрами системы, выберите «Дополнительные параметры системы» (Advanced system settings). Во вкладке «Дополнительно» (Advanced), раздел «» (Startup and Recovery) нажмите кнопку «Параметры» (Settings). В открывшемся окне настройте действия при отказе системы.

Поставьте галку в чек-боксе «Записать события в системный журнал» (Write an event to the system log), выберите тип дампа, который должен создаваться при сбое системы. Если в чек-боксе «Заменять существующий файл дампа» (Overwrite any existing file) поставить галку, то файл будет перезаписываться при каждом сбое. Лучше эту галку снять, тогда у вас будет больше информации для анализа.

Отключите также автоматическую перезагрузку системы (Automatically restart).

В большинстве случаев для анализа причины BSOD вам будет достаточно малого дампа памяти.

Теперь при возникновении BSOD вы сможете проанализировать файл дампа и найти причину сбоев. Мини дамп по умолчанию сохраняется в папке %systemroot%\minidump. Для анализа файла дампа рекомендую воспользоваться программой WinDBG(Microsoft Kernel Debugger).

Установка WinDBG в Windows

Файл называется winsdksetup.exe, размер 1,3 МБ.

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

Можете установить весь пакет, но для установки только инструмента отладки выберите Debugging Tools for Windows.

После установки ярлыки WinDBG можно найти в стартовом меню.

Настройка ассоциации.dmp файлов с WinDBG

Для того, чтобы открывать файлы дампов простым кликом, сопоставьте расширение.dmp с утилитой WinDBG.

Настройка сервера отладочных символов в WinDBG

Отладочные символы (debug-символы или symbol files) – это блоки данных, генерируемые в процессе компиляции программы совместно с исполняемым файлом. В таких блоках данных содержится информация о именах переменных, вызываемых функциях, библиотеках и т.д. Эти данные не нужны при выполнении программы, но полезные при ее отладке. Компоненты Microsoft компилируются с символами, распространяемыми через Microsoft Symbol Server.

Настройте WinDBG на использование Microsoft Symbol Server:

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

Анализ аварийного дампа памяти в WinDBG

Отладчик WinDBG открывает файл дампа и загружает необходимые символы для отладки из локальной папки или из интернета. Во время этого процесса вы не можете использовать WinDBG. Внизу окна (в командной строке отладчика) появляется надпись Debugee not connected.

Команды вводятся в командную строку, расположенную внизу окна.

Основные моменты, на которые вы должны обратить внимание при анализе после выполнения команды!analyze –v (листинг неполный).

* ** Bugcheck Analysis ** ****************************************************************************** Символическое имя STOP-ошибки (BugCheck) KERNEL_SECURITY_CHECK_FAILURE (139)

Описание ошибки (Компонент ядра повредил критическую структуру данных. Это повреждение потенциально может позволить злоумышленнику получить контроль над этой машиной):

A kernel component has corrupted a critical data structure. The corruption could potentially allow a malicious user to gain control of this machine.
Аргументы ошибки:

Arguments:Arg1: 0000000000000003, A LIST_ENTRY has been corrupted (i.e. double remove).Arg2: ffffd0003a20d5d0, Address of the trap frame for the exception that caused the bugcheckArg3: ffffd0003a20d528, Address of the exception record for the exception that caused the bugcheckArg4: 0000000000000000, ReservedDebugging Details:

Счетчик показывает сколько раз система упала с аналогичной ошибкой:

Код STOP-ошибки в сокращенном формате:

Процесс, во время исполнения которого произошел сбой (не обязательно причина ошибки, просто в момент сбоя в памяти выполнялся этот процесс):

Расшифровка кода ошибки: В этом приложении система обнаружила переполнение буфера стека, что может позволить злоумышленнику получить контроль над этим приложением.

ERROR_CODE: (NTSTATUS) 0xc0000409 — The system detected an overrun of a stack-based buffer in this application. This overrun could potentially allow a malicious user to gain control of this application.
EXCEPTION_CODE: (NTSTATUS) 0xc0000409 — The system detected an overrun of a stack-based buffer in this application. This overrun could potentially allow a malicious user to gain control of this application.

Последний вызов в стеке:

LAST_CONTROL_TRANSFER: from fffff8040117d6a9 to fffff8040116b0a0

Стек вызовов в момент сбоя:

000000ee`f25ed2b8 00000000`00000000: 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000: 0x00007f`475307da

Участок кода, где возникла ошибка:

Имя модуля в таблице объектов ядра. Если анализатору удалось обнаружить проблемный драйвер, имя отображается в полях MODULE_NAME и IMAGE_NAME:

MODULE_NAME: nt
IMAGE_NAME: ntkrnlmp.exe

Microsoft Windows debugging symbols можно ли удалить?

Что такое debugging symbols. Смотреть фото Что такое debugging symbols. Смотреть картинку Что такое debugging symbols. Картинка про Что такое debugging symbols. Фото Что такое debugging symbols

Здравствуйте друзья, сегодня разберем интересную тему, которая поможет вам в будущем при появлении синего экрана смерти (BSoD).

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

Недавно у меня снова появился голубой экран в Windows 10, но я быстро от него избавился и скоро об этом вам расскажу.

Хотите смотреть фильмы онлайн в хорошем качестве? Тогда переходите по ссылке.

Итак, большинство пользователей не знают, что BSoD можно анализировать, чтобы впоследствии понять проблемы критической ошибки. Для таких случаев Windows создает на диске специальные файлы – дампы памяти, их то мы и будем анализировать.

Есть три типа дампа памяти:

Полный дамп памяти – эта функция позволяет полностью сохранить содержимое оперативной памяти. Он редко используется, так как представьте, что у вас 32 Гб оперативной памяти, при полном дампе весь этот объем сохранится на диске.

Дамп ядра – сохраняет информацию о режиме ядра.

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

Расположение, как малого, так и полного дампа отличается, например, малый дамп находится по следующему пути: %systemroot%\minidump.

Полный дамп находится здесь: %systemroot%.

Для анализа дампов памяти существуют различные программы, но мы воспользуемся двумя. Первая – Microsoft Kernel Debuggers, как понятно из названия утилита от Microsoft. Скачать ее можно с официального сайта. Вторая программа – BlueScreenView, бесплатная программка, скачиваем отсюда.

Анализ дампа памяти с помощью Microsoft Kernel Debuggers

Для разных версий систем нужно скачивать свой тип утилиты. Например, для 64-х разрядной операционной системы, нужна 64-битовая программа, для 32-х разрядной – 32-битная версия.

Это еще не все, вам нужно скачать и установить пакет отладочных символов, нужные для программы. Называется Debugging Symbols. Каждая версия данного пакета тоже скачивается под определённою ОС, для начала узнайте какая у вас система, а потом скачивайте. Дабы вам не искать где попало эти символы, вот ссылка на скачивание. Установка, желательно, должна производиться по этому пути: %systemroot%\symbols.

Теперь можно запускать наш отладчик, окно которого будет выглядеть вот так:

Прежде чем проанализировать дампы мы кое-что настроим в утилите. Во-первых, нужно указать программе, куда мы установили отладочные символы. Для этого нажимаем на кнопку «File» и выбираем пункт «Symbol File Path», потом указываем путь до символов.

Программа позволяет извлекать символы прямо из сети, поэтому вам даже не придется их скачивать (извините те, кто уже скачал). Они буду браться с сервером Microsoft, поэтому все безопасно. Итак, вам нужно снова открыть «File», потом «Symbol File Path» и ввести следующую команду:

SRV*%systemroot%\symbols*http://msdl.microsoft.com/download/symbols

Таким образом мы указали программе, что символы должны браться из сети. Как только мы это сделали нажимаем «File» и выбираем пункт «Save Workspace», потом жмем ОК.

Вот и все. Мы настроили программу на нужный лад, теперь приступаем к анализу дампов памяти. В программе нажимаем кнопочку «File», потом «Open Crash Dump» и выбираем нужный файл.

Kernel Debuggers начнет анализ файла и после этого выведет результат о причине ошибки.

В появившемся окне можно вводить команды. Если мы введем !analyze –v, то получим больше информации.

Вот и все с этой программой. Чтобы остановить работу отладчика, выберите «Debug» и пункт «Stop Debugging».

Анализ дампа памяти с помощью BlueScreenView

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

Скачайте программу по указанной выше ссылке и установите. После запуска утилиты нужно ее настроить. Зайдите в параметры: «Настройки» – «Дополнительные параметры». Откроется небольшое окошко, в котором есть пару пунктов. В первом пункте нужно указать местонахождение дампов памяти. Обычно они находятся по пути C:\WINDOWS\Minidump. Тогда просто нажмите кнопку «По умолчанию».

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

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

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

В интернете можно найти все о коде ошибке и драйвере, который может быть виной BSoD. Для этого нажимаем «Файл», а потом «Найти в Google код ошибки + Драйвер».

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *