Привет Возникли такие вопросы по встроенному отладчику VS: 1. При написании ехе - отладка - процесс не сложный. F7-F11 и далее по шагам. А как отлаживать длл? Как отлаживать отдельные функции длл? 2. Как сэмулировать последовательный вызов функций из разрабатываемой длл? Сейчас в конце DllMain напрямую вызываю MyFunc1(), MyFunc2() и т.д. Но этот вариант мне не нравится --------------------------------------------- заранее благодарен за ваши ответы
Один добавил бы в Solution новый Project, который бы являлся проектом приложения, использующего отлаживаемую dll. В main этого нового проекта были бы вызовы MyFunc1(), MyFunc2(),..
так и делаю ну а проще? чтобы непосредственно при написании можно было проверить работоспособность 10-20 новых строк. Без запуска нового процесса
Colibri Для этого Микрософт сделал VisualBasic. Но и там все равно отладчик приходится перезапускать. Твоя проблема решается просто : напиши кучу пустых вызовов и заведи пустую функцию с большим числом аргументов. Потом правь ее, но на СИ все равно не получится править. Тебе нужен язык-интерпретатор, где не нужна компиляция. Но даже интерпретатор не может отлаживать без перезапуска. Хочешь проще - создай язык с новой концепцией
valterg нет, я вовсе не об этом. То что при повторной отладке нужен перезапуск отлаживаемого процесса - это очевидно. Я о другом. Предположим нужно отладить длл, а точнее некоторые функции из длл. Сейчас я делаю как... Добвляю в длл инфу об отладке. Далее пишу небольшой ехе, который загрузит длл и будет вызывать из нее требуемые функции. И далее при вызове прыгаем из ехе внутрь вызываемой функции и там отлаживаем. Я хотел узнать, можно ли обойтись без этого отдельного ехе, а прямо в среде разработки жать ф7-ф10 и отлаживать длл? Т.е. точно так же, как при написании в VS ехе.
Кто-то грузить dll'ку и вызывать нужные функции должен, так что создавать отдельный проект для exe'шника, по-видимому, придётся. Но если он уже создан, то для отладки функций dll достаточно следующего: в опциях проекта dll в поле "Executable for debug session" на вкладке "Debug" (для VC6) / "Command" в разделе "Debugging" (для VS2005) указать полный путь к exe'шнику. После этого можно отлаживать dll'ку, не переключаясь на проект exe'шника (F5, Ctrl+F10 в проекте dll - соответственно запуск и запуск до строчки под курсором).
Colibri loaddll.exe из поставки ollydbg не поможет? А вообще dll отлаживают, цепляясь к целевому процессу (который грузит эту длл) и расставляя точки останова в нужных местах.
Colibri Ну если трудности не пугают, то действительно loaddll, вручную стек заполнить и поменять текущий адрес в EIP. Но по моему проще все-таки экзешник нормальный делать. Либо написать универсальный, который динамически входы из DLL вызывает. Тогда только менять имя входа и стек корректировать.