Дамп потока с .net 4

#c# #.net #multithreading #.net-4.0

#c# #.net #многопоточность #.net-4.0

Вопрос:

Добрый день. Я пытаюсь получить дамп потока (трассировку стека и состояние для каждого запущенного потока) в приложении .net 4 framework.

Управляемый Stack Explorer, как я полагаю, не подходит для .net 4 (я не могу найти информацию о нем), он показывает только приложения .net 3.5 и ниже.

Process Explorer действительно выдает дамп потока, но с начальными адресами, а не с трассировкой стека, что не очень полезно.

Есть идеи?

Комментарии:

1. Это запущенное приложение или одно из ваших IDE?

Ответ №1:

Вы используете Vista или Windows7?

Вы используете 32 или 64-битную версию?

Щелкните правой кнопкой мыши процесс в диспетчере задач и выберите «Создать файл дампа». Затем вы можете перетащить DMP-файл в Visual Studio (при условии, что он обрабатывается в .NET4) и просмотреть требуемую информацию. смотрите здесь для получения дополнительной информации.

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

Комментарии:

1. Я создал файл дампа, но VS2010 pro по какой-то причине не может прикрепить его к моим PDF-файлам, все, что я получаю, это зашифрованные начальные адреса для DLL. Он также не может найти мои исходники.

2. был ли дамп сделан на 64-разрядной машине и выполняется ли отладка на 64-разрядной машине? Совпадает ли ваша pdb с вашим запущенным приложением? (скорее всего, это ваша проблема)

3. @wal: дамп был сделан на 32-разрядной машине. Что вы подразумеваете под «pdb, соответствующей моему приложению»? Я взял файлы PDF из каталога вывода сборки (того же каталога, из которого я взял exe и библиотеки DLL для запуска своего приложения). Это нормально?

4. Начните отладку вашего файла дампа, затем откройте окно модулей. (Отладка->Windows-> Модули). Найдите свой модуль пользовательского кода и посмотрите, загружается ли файл символов. Попытайтесь загрузить pdb по исходному пути. Я только что создал файл дампа простого однострочного приложения Forms, и в дампе много неуправляемого кода. Видите ли вы какие-либо управляемые фреймы стека в параллельных стеках (Debug-> Windows-> Параллельные стеки)

5. поместите ваши pdb-файлы в ту же папку, что и ваш файл дампа.