#delphi #debugging #exe #delphi-2006 #disassembly
#delphi #отладка #exe #delphi-2006 #разборка
Вопрос:
У меня есть EXE-файл, созданный компилятором D2006, и связанные с ним файлы RSM и MAP в той же папке, что и EXE. Файлы являются локальными для компьютера, на котором установлен Delphi. Я могу запустить IDE и «Загрузить Process» EXE-файл и запустить его, но я не вижу никакой символической информации, если приостанавливаю выполнение.
Что мне нужно сделать, чтобы увидеть имена процедур и т.д. В виде меток при разборке и иметь возможность «получить» адрес, указав имя процедуры?
Если у меня есть исходный код, доступный в той же папке, могу ли я выполнить пошаговое выполнение на высоком уровне и т.д.?
Комментарии:
1. AFAIK, это не сработает. Для отладки Delphi использует отладочную информацию, расположенную в файлах .dcu. Возможно, вы сможете сделать это, используя «Удаленную отладку» с символами .rsm, но не загружая процесс напрямую через отладчик IDE, и я думаю, что вам все еще нужны файлы .dcu локально, чтобы выполнить это с помощью удаленного отладчика. У вас есть исходный код приложения (вы сказали «исходный код доступен в той же папке»). Почему бы не загрузить проект в IDE и не выполнить отладку в обычном режиме?
2. Спасибо @Ken. Когда я развертываю исполняемый файл и сохраняю исполняемый файл, файлы MAP и RSM, а также исходный код, установленный на тот момент. Если я получу ошибку в предыдущей сборке в поле, я решил, что смогу восстановить этот набор файлов во временную папку, загрузить EXE-файл и использовать IDE для отладки кода на уровне исходного кода. Вы хотите сказать, что мне также нужно было бы сохранить файлы DCU. Хотя я мог бы загрузить этот набор файлов в IDE и отладить его, у меня возникла бы проблема, связанная с тем, что некоторые из используемых библиотечных подпрограмм будут «перенесены». Возможно, ответ заключается в использовании удаленного отладчика вместо этого (который я никогда не использовал).
3. и да, я знаю, что система контроля версий позволила бы мне это сделать….
Ответ №1:
Для отладки своих приложений на Delphi я использую MadExcept, это очень хороший инструмент, и его легко настроить для ваших проектов, вот некоторая информация о нем.
«MadExcept был создан, чтобы помочь вам находить сбои в вашем программном обеспечении. Всякий раз, когда в вашей программе происходит сбой / исключение, MadExcept автоматически обнаружит его, проанализирует, соберет много полезной информации и предоставит конечному пользователю возможность отправить вам полный отчет об ошибке.»
Комментарии:
1. Это не отвечает на заданный вопрос, который заключается в том, как отладить уже созданный исполняемый файл . MadExcept — это продукт для обработки исключений, но его в первую очередь необходимо скомпилировать в приложение. Это не отладчик , и он не выполняет удаленную символьную отладку. (Однако это фантастический пакет для обработки исключений.) Пожалуйста, прочтите вопрос еще раз. Если вы хотите рекомендовать MadExcept, это должно быть в качестве комментария к исходному вопросу; это не ответ.