Nano Hash - криптовалюты, майнинг, программирование

Проблемы с отладкой минидампа в VS 2010

Я вызываю MiniDumpWriteDump из .NET для создания минидампа, и он отлично работает. Однако когда я загружаю полученный дамп в VS 2010, я не вижу никакой полезной информации. В частности, окно Стек вызовов выглядит примерно так:

Стек вызовов

Он не содержит управляемых фреймов, хотя я пишу дамп в обработчике исключений в управляемом коде. Кроме того, он не содержит фреймов, расположенных в моем exe.

Есть идеи, почему это происходит?

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

Изменить:

Я нашел Проблема с Microsoft Connect по этому поводу. Он говорит:

В настоящее время среда CLR не поддерживает управляемые процессы, создающие собственные дампы.

Кто-нибудь знает, правда ли это?


  • Отладка минидампов с помощью управляемого кода остается сомнительной радостью в VS2010. Просто несколько советов: вам необходимо включить серверы Microsoft Symbol, чтобы отладчик мог правильно обходить неуправляемый стек с помощью файлов Windows .pdb. И вам нужно установить для параметра MiniDumpWriteDump () одиннадцать, чтобы куча, собранная с мусором, попадала в минидамп. Вы делаете это правильно, если тот, который вы создаете, такой же огромный, как тот, который создает VS. 17.08.2011
  • @stefan msdn.microsoft.com/en-us/magazine/cc188701.aspx - Перебрав все, что я мог придумать, я понял, что единственный способ получить информацию из других стеков - это запустить процесс, который будет передавать эту информацию обратно в SUPERASSERT.NET. и хотя идея состоит в том, чтобы пройти по всем стекам изнутри процесса, жизнеспособного способа добиться этого не существует. 16.09.2011

Ответы:


1

Я нашел свою ошибку. Я смотрел на стек вызовов не того потока (я не понимал, что запущено более одного потока). Теперь я прекрасно вижу стек управляемых вызовов.

09.09.2011

2

Я делаю нечто подобное в своем приложении (т.е. вызываю MiniDumpWriteDump, а затем исследую дампы в отладчике).

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

  • либо информация о символе отсутствует
  • либо библиотека DLL или EXE, которая использовалась процессом во время создания дампа, отсутствует

Первую причину решить несложно. В VS2010 вы можете просто щелкнуть правой кнопкой мыши DLL в стеке вызовов или в окне «Модули» и выбрать «Загрузить символы с серверов Microsoft».

Вторую причину решить сложнее. Если DLL или EXE отсутствует, отладчик не позволяет вам отлаживать его и даже отказывается смотреть на символы. Уловка состоит в том, чтобы сгенерировать фиктивную DLL / EXE из файла DMP. См. http://www.debuginfo.com/tools/modulerescue.html для Утилита MODULERESCUE. Эта утилита может сгенерировать фиктивные DLL и EXE для заданного файла DMP, ровно столько, чтобы удовлетворить отладчик, чтобы он снова захотел загрузить символы.

09.09.2011
  • Спасибо. Я нашел свою ошибку, я смотрел не на ту тему. 09.09.2011

  • 3

    Имейте в виду, что вы должны вызывать MiniDumpWriteDump из фильтра исключений, который поддерживается VB.NET, но не C #.

    Взгляните на эти ссылки:

    Получение хороших дампов при возникновении исключения

    Написание минидампов из Исключения в C #

    09.09.2011
  • Спасибо. Я разместил здесь следующий вопрос: stackoverflow.com/questions/7372535/ 10.09.2011
  • Новые материалы

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

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..