Отладка приложений

       

Что подключает LIMODSDLL.DLL


Когда LIMODSDLL.DLL стартует, он перехватывает ключевые импортированные функции трассировки во всех модулях процессов. Для данной версии LIMODS этими функциями являются OutputDebugStringA и OutputDebugStringW ИЗ KERNEL32.DLL, DiagOutputA DiagOutputW ИЗ BUGSLAYERUTIL.DLL, _CrtDbgReport из MSVCRTD.DLL и AfxTrace из MFC42(U)D.DLL. Кроме того, я подключил семейство функций LoadLibrary, что позволяет получать своевременную информацию о загрузке в адресное пространство дополнительных модулей.

Для того чтобы LIMODS могла работать с Visual Basic, потребовалось также подключить функцию GetProcAddress, чтобы обеспечить возвращение соответствующей функции, когда MSVBVM60.DLL пытается получить функцию OutputDebugStringA. О функциях подключения говорилось в главе 12 и, казалось бы, эта тема исчерпана. Однако при подключении функций DiagOutputA, DiagOutputW и AfxTrace возникают некоторые уникальные проблемы. Во-первых, эти функции имеют спецификатор вызова _cdeci (а не _stdcaii), и в главе 12 показано, как нужно их подключать. Кроме того, AfxTrace экспортируется по порядковому значению (а не по имени).



Содержание раздела