#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-файлы в ту же папку, что и ваш файл дампа.