Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
17 матлаб.docx
Скачиваний:
5
Добавлен:
01.03.2025
Размер:
93.6 Кб
Скачать

Диалоги отладчика

Диалоги отладчика предоставляют ряд дополнительных возможностей. Все они вызываются из меню Debug.

Quick Watch

Этот диалог имеет возможности, аналогичные возможностям окна Watch, с той разницей, что в нём можно просматривать только одну переменную за раз. Используется, когда вам не хочется добавлять переменную в окно Watch. Его можно вызвать, используя комбинацию Shift+F9.

Exceptions

Этот диалог позволяет настроить реакцию отладчика на возникновение системных и пользовательских исключений. Для каждого исключения можно выбрать действие Stop always (останавливаться всегда) или Stop if not handled (останавливаться, если исключение не обработано).

Threads

Этот диалог показывает список потоков, созданных вашей программой. Позволяет приостановить (suspend) или продолжить (resume) любой поток, а также установить на него фокус (то есть сделать его текущим). Этот диалог – практически единственное средство для отладки многопоточных приложений, которое предоставляет Visual C++.

Modules

Этот диалог показывает список загруженных модулей. Для каждого модуля выводится диапазон адресов и имя файла.

#include <windows.h>

#include <stdio.h>

typedef struct tagDEBUGHELPER

{

DWORD dwVersion;

BOOL (WINAPI *ReadDebuggeeMemory)(

struct tagDEBUGHELPER *pThis,

DWORD dwAddr,

DWORD nWant,

VOID* pWhere,

DWORD *nGot

);

// from here only when dwVersion >= 0x20000

DWORDLONG (WINAPI *GetRealAddress)(struct tagDEBUGHELPER *pThis);

BOOL (WINAPI *ReadDebuggeeMemoryEx)(

struct tagDEBUGHELPER *pThis,

DWORDLONG qwAddr,

DWORD nWant,

VOID* pWhere,

DWORD *nGot

);

int (WINAPI *GetProcessorType)(struct tagDEBUGHELPER *pThis);

} DEBUGHELPER;

extern "C" __declspec(dllexport)

HRESULT WINAPI MyRectFormat(

DWORD dwAddress,

DEBUGHELPER *pHelper,

int nBase,

BOOL bUniStrings,

char *pResult,

size_t max,

DWORD reserved

)

{

RECT rc;

DWORD dwGot;

pHelper->ReadDebuggeeMemory(

pHelper, dwAddress, sizeof(rc), &rc, &dwGot);

if(dwGot != sizeof(rc))

return E_FAIL;

sprintf(

pResult,

"width=%d; height=%d",

rc.right-rc.left, rc.bottom-rc.top

);

return S_OK;

}

BOOL APIENTRY DllMain(HANDLE, DWORD, LPVOID)

{

return TRUE;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]