Что возможности там для анализа после смерти в.NET (например, после катастрофического отказа программы)?

Babel Cli не может сделать это. Его можно подобрать с помощью опции --relative:

babel src/*/src --out-dir ../lib --relative

Однако это не переименовывает верхний каталог; в конечном итоге вы получите структуру, подобную приведенной ниже, в исходном корневом каталоге:

|src
|---A
|-----lib
|-----------a.js
|-----src
|-----------a.js
|---B
|-----lib
|-----------b.js
|-----src
|-----------b.js

Если вам действительно нужна окончательная структура, вы можете выполнить это с помощью некоторого bash cp -R src lib; rm -rf lib/*/src. Или с помощью rsync rsync -r --exclude='src/*/src' src lib. Или вместо использования --relative выше, скомпилируйте каждый пакет отдельно с помощью ls src | xargs -I{} babel src/{}/src -d lib/{}/lib

Если вы действительно хотите сделать это за один шаг, вам, вероятно, придется использовать такой инструмент, как Gulp, или написать скрипт с API Babel напрямую.

5
задан Theo Lenndorff 18 January 2009 в 13:27
поделиться

5 ответов

Поскольку Marc говорит, что WinDbg + SoS позволит Вам отладить много проблем, Вы не можете действительно обратиться в Visual Studio. Существуют некоторые превосходные учебные руководства этот блог.

Для проблем памяти можно также посмотреть на Счетчики производительности.NET в Perfmon. Вы могли посмотреть на то, где объекты расположены (который поколение) и сколько время, тратят в сборке "мусора". Это должно дать Вам немного полезной информации. Если Вы хотите знать, почему объектом не является собранный WinDbg, и SoS является способом пойти. Для обхода Вас через простую сессию, шаги:

  1. Осмотрите использование "кучи" !dumpheap -stat, ищите большое количество экземпляров. У Вас, вероятно, есть некоторая идея того, что Вы ожидали бы находить на "куче" в любой данный момент, поэтому если что-нибудь выглядит необычным, изучите это.

  2. Выберите случайный экземпляр и сделайте a !gcroot на адресе экземпляра. Это скажет Вам, почему объект не собирается.

  3. Повториться

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

Можно также хотеть смотреть на мой ответ для этого вопроса видеть больше материала WinDbg.

2
ответ дан 14 December 2019 в 13:49
поделиться

Можно сделать дампы катастрофического отказа с.NET и посмотреть на них с windbg / SOS (и sosassist). Не простой, но это работает. Но довольно жесткий. Поиски на "+windbg +.NET" должны оказаться интересными.

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

2
ответ дан 14 December 2019 в 13:49
поделиться

Большим ресурсом для посмертного анализа с WinDbg и SOS является Tess Ferrandez' ряд записей в блоге на предмете.

Править: Ссылка обновляется

1
ответ дан 14 December 2019 в 13:49
поделиться

К сожалению, я должен был сделать изрядное количество этого - лучший инструмент, с которым я столкнулся, cordbg, который идет с sdk (Вам будет нужна правильная версия для Вашей версии .NET). http://msdn.microsoft.com/en-us/library/a6zb7c8d.aspx для деталей.

Присоедините к рабочему процессу в cordbg (<[pid]>), присоедините к каждому рабочему потоку (t <[tid]>), затем выводят стек для каждого потока (w).

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

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

1
ответ дан 14 December 2019 в 13:49
поделиться

Если процесс, все еще живут затем, Вы могли бы запустить Управляемый Проводник Стека против него для получения быстрого снимка того, что он делает. Можно выполнить это без явной установки.

Кроме этого затем полный дамп + windbg + SOS дает Вам большую часть информации, но достигание его не тривиально.

0
ответ дан 14 December 2019 в 13:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: