Есть такая задача(WIN32).
Есть софтина, написанная на С/С++, откомпилирована в MSVC. Софтина падает. Пере падением успевает логировать точку падения.
Задача: по точке найти где приблизительно упало. Приблизительно значит имя файла исходника и номер строки.
В чем прикол? Прикол в том, что студия 2002/2003 умела опцию /MAPINFO:LINES, и потому поиск места падения было делом 30 секунд. Из остальных идиоты из МС вырезали без указания причин и с обещанием не возвращать. Встал вопрос на миграцию на новые компиляторы, и хочется что-бы возможность найти место осталась(не найдем — останемся на 2002).
Минидампы делать не предлагать, умеем, пользуемся.
В идеале хотелось бы утилитку которой скормили .pdb файл и RVA падения, а она вернула искомую точку.
Если кто знает API которым можно воспользоваться для решения задачи, за пример, ссылочку на пример/документацию буду очень признателен.
Здравствуйте, PanychY, Вы писали:
PY>В идеале хотелось бы утилитку которой скормили .pdb файл и RVA падения, а она вернула искомую точку. PY>Если кто знает API которым можно воспользоваться для решения задачи, за пример, ссылочку на пример/документацию буду очень признателен.
Здравствуйте, PanychY, Вы писали:
Попробуй такой финт:
1. включи генерацию asm-листинга при компиляции
2. Натрави на итоговый бинарь dumpbin /disasm
3. По дампу найдёшь вальнувшую инструкцию, по инструкции в листинге — строку кода
Вроде, так.
А вот то, что уродцы эти убрали генерацию map подробного — это печаль. PY>Здравствуйте.
PY>Есть такая задача(WIN32). PY>Есть софтина, написанная на С/С++, откомпилирована в MSVC. Софтина падает. Пере падением успевает логировать точку падения. PY>Задача: по точке найти где приблизительно упало. Приблизительно значит имя файла исходника и номер строки. PY>В чем прикол? Прикол в том, что студия 2002/2003 умела опцию /MAPINFO:LINES, и потому поиск места падения было делом 30 секунд. Из остальных идиоты из МС вырезали без указания причин и с обещанием не возвращать. Встал вопрос на миграцию на новые компиляторы, и хочется что-бы возможность найти место осталась(не найдем — останемся на 2002). PY>Минидампы делать не предлагать, умеем, пользуемся. PY>В идеале хотелось бы утилитку которой скормили .pdb файл и RVA падения, а она вернула искомую точку. PY>Если кто знает API которым можно воспользоваться для решения задачи, за пример, ссылочку на пример/документацию буду очень признателен.
Здравствуйте, Abyx, Вы писали:
A>для этого есть MS DIA SDK A>недавно писал такое:
Спасибо попробуем.
Я так понимаю, такой можно юзать только и только на машине где это самое DIA стоит, т.е. нужна установленная студия. Хотелось что-нибудь по компактнее. Ведь как-то тот же NTSD вылавливает всё что нужно.
Здравствуйте, PanychY, Вы писали:
PY>Здравствуйте, Abyx, Вы писали:
A>>для этого есть MS DIA SDK A>>недавно писал такое:
PY>Спасибо попробуем. PY>Я так понимаю, такой можно юзать только и только на машине где это самое DIA стоит, т.е. нужна установленная студия. Хотелось что-нибудь по компактнее. Ведь как-то тот же NTSD вылавливает всё что нужно.
достаточно msdia<версия MSVS>.dll
In Zen We Trust
Re: Разбор креш-дампа
От:
Аноним
Дата:
05.11.11 13:27
Оценка:
Здравствуйте, PanychY, Вы писали:
PY>В идеале хотелось бы утилитку которой скормили .pdb файл и RVA падения, а она вернула искомую точку. PY>Если кто знает API которым можно воспользоваться для решения задачи, за пример, ссылочку на пример/документацию буду очень признателен.
крешдамп скормить WinDbg?
Здравствуйте, Stanislav V. Zudin, Вы писали:
SVZ>А почему бы не воспользоваться штатным Dr.Watson'ом на клиентской машине?
Для чего? Точку падения имеем без него(SetUnhandledExceptionFilter нам помог). Что он ещё полезного даст, если на клиентскую машину никто не будет давать .pdb файлы? Нет, я согласен, если вдруг случилась порча памяти(вирусня нагадила, или умник дебажить полез) то можно буде сравнить "наши ли инструкции упали или чужие", но это уже другой разговор.
Здравствуйте, serg_joker, Вы писали:
_>Чукча писатель ? _>Здравствуйте, Аноним, Вы писали: А>>крешдамп скормить WinDbg?
Минидампы делать не предлагать, умеем, пользуемся.
Если бы вы умели, вопрос бы не встал о том, чтобы использовать какую-то MS-забытую символьную имформацию через /mapinfo:lines.
И чем обзывать MS, прежде взглянули бы в зеркало. Что мешает сгенерить крешдамп при падении? Что мешает передать его в вашу техподдержку? Что мешает вашим тестерам скормить его WinDbg и увидеть место падения?
И получите в итоге не "Приблизительно значит имя файла исходника и номер строки", а вполне себе полное представление (вместе со стеком и регистрами) о месте падения.
Вы, извините, какого рода ПО разрабытываете? Какого рода клиенты? Наши клиенты, например, могут ни за что не дадть ни одного файла, который у них на машине сгенерируется, ибо, имея на руках крешдамп (особенно с памятью), я могу узнать то, что мне знать не полагается. Пароли там разновсячиские, к примеру.
А переписать адресок с экрана во время вебекс сеанса — вполне можно. И точная строка кода вполне себе может быть хорошим подспорьем в решении проблемы.
Делая такие категоричные заявление, стоило бы подумать, что программирование и поддержка продуктов — они разные очень бывают.
Удачи!
А>Если бы вы умели, вопрос бы не встал о том, чтобы использовать какую-то MS-забытую символьную имформацию через /mapinfo:lines.
А>И чем обзывать MS, прежде взглянули бы в зеркало. Что мешает сгенерить крешдамп при падении? Что мешает передать его в вашу техподдержку? Что мешает вашим тестерам скормить его WinDbg и увидеть место падения? А>И получите в итоге не "Приблизительно значит имя файла исходника и номер строки", а вполне себе полное представление (вместе со стеком и регистрами) о месте падения.
Re: Разбор креш-дампа
От:
Аноним
Дата:
08.11.11 10:41
Оценка:
Можно попробовать заюзать питоновскую либу pykd.
Она может работать как расширение windbg или как отдельный модуль.
В данном случае можно использовать второй режим.
Проект в стадии разработки, так что некоторых полезных вещей может и не быть. Но если идея понравится — пишите, добавим фичи, на все вопросы ответим )).
Сайт проекта:
pykd.codeplex.com
Re[5]: Разбор креш-дампа
От:
Аноним
Дата:
08.11.11 17:17
Оценка:
Здравствуйте, serg_joker, Вы писали:
_>Наши клиенты, например, могут ни за что не дадть ни одного файла, который у них на машине сгенерируется, ибо, имея на руках крешдамп (особенно с памятью), я могу узнать то, что мне знать не полагается.
Ну тогда извиняюсь и беру слова обратно, не все ж тилипаты