Visual Studio. Как пользоваться отладчиком?

Тема в разделе "WASM.BEGINNERS", создана пользователем Colibri, 12 май 2008.

  1. Colibri

    Colibri New Member

    Публикаций:
    0
    Регистрация:
    8 май 2008
    Сообщения:
    117
    Привет
    Возникли такие вопросы по встроенному отладчику VS:

    1. При написании ехе - отладка - процесс не сложный. F7-F11 и далее по шагам.
    А как отлаживать длл? Как отлаживать отдельные функции длл?

    2. Как сэмулировать последовательный вызов функций из разрабатываемой длл?
    Сейчас в конце DllMain напрямую вызываю MyFunc1(), MyFunc2() и т.д. Но этот вариант мне не нравится

    ---------------------------------------------
    заранее благодарен за ваши ответы
     
  2. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    Один добавил бы в Solution новый Project, который бы являлся проектом приложения, использующего отлаживаемую dll. В main этого нового проекта были бы вызовы MyFunc1(), MyFunc2(),..
     
  3. Colibri

    Colibri New Member

    Публикаций:
    0
    Регистрация:
    8 май 2008
    Сообщения:
    117
    так и делаю
    ну а проще? чтобы непосредственно при написании можно было проверить работоспособность 10-20 новых строк. Без запуска нового процесса
     
  4. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Colibri
    Для этого Микрософт сделал VisualBasic. Но и там все равно отладчик приходится перезапускать.
    Твоя проблема решается просто : напиши кучу пустых вызовов и заведи пустую функцию с большим числом аргументов. Потом правь ее, но на СИ все равно не получится править. Тебе нужен язык-интерпретатор, где не нужна компиляция. Но даже интерпретатор не может отлаживать без перезапуска.
    Хочешь проще - создай язык с новой концепцией :)
     
  5. Colibri

    Colibri New Member

    Публикаций:
    0
    Регистрация:
    8 май 2008
    Сообщения:
    117
    valterg
    нет, я вовсе не об этом.
    То что при повторной отладке нужен перезапуск отлаживаемого процесса - это очевидно.

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

    Я хотел узнать, можно ли обойтись без этого отдельного ехе, а прямо в среде разработки жать ф7-ф10 и отлаживать длл? Т.е. точно так же, как при написании в VS ехе.
     
  6. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    Кто-то грузить dll'ку и вызывать нужные функции должен, так что создавать отдельный проект для exe'шника, по-видимому, придётся. Но если он уже создан, то для отладки функций dll достаточно следующего: в опциях проекта dll в поле "Executable for debug session" на вкладке "Debug" (для VC6) / "Command" в разделе "Debugging" (для VS2005) указать полный путь к exe'шнику. После этого можно отлаживать dll'ку, не переключаясь на проект exe'шника (F5, Ctrl+F10 в проекте dll - соответственно запуск и запуск до строчки под курсором).
     
  7. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.298
    Адрес:
    Ukraine
    Colibri
    loaddll.exe из поставки ollydbg не поможет? А вообще dll отлаживают, цепляясь к целевому процессу (который грузит эту длл) и расставляя точки останова в нужных местах.
     
  8. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Colibri
    Ну если трудности не пугают, то действительно loaddll, вручную стек заполнить и поменять текущий адрес в EIP. Но по моему проще все-таки экзешник нормальный делать. Либо написать универсальный, который динамически входы из DLL вызывает. Тогда только менять имя входа и стек корректировать.