Создайте/откройте текстовый файл для записи отладочной информации (каждый новый вызов данного кода будет перезаписывать содержимое файла):
FILE *f = fopen("C:\\DLL_Log.txt", "w+"); // Создает файл лога |
Открывайте потом этот файл для чтения в Notepad++.
Объявите следующую функцию:
static void Log(int Line, char *Str = " ") { char DebugLine[256] = ""; sprintf_s(DebugLine, "Строка: %u %s\n", Line, Str); if (pb != NULL) { sprintf_s(DebugLine, "%s в памяти:%s", DebugLine, pb); } fwrite(DebugLine, sizeof(DebugLine), 1, f); fwrite("\n", sizeof("\n"), 1, f); fflush(f); } |
(Если указатель на память у Вас объявлен отличным от pb (PBYTE pb;), то поменяйте указатель pb в вышеописанной функции на Ваш)
Затем вставляйте в код DLL следующие строки:
Log(__LINE__); //ИЛИ Log(__LINE__, "Какой-то поясняющий текст"); |
Если строка "Log(__LINE__);" была размещена в 164-й строке исходного кода DLL, а в именованной памяти в тот момент находилась запись "_QW_" то при выполнении DLL в файл запишется следующий текст:
Строка: 164 в памяти:_QW_
Если в то же место поместить строку "Log(__LINE__, "Какой-то поясняющий текст");", то в файл запишется следующее:
Строка: 164 Какой-то поясняющий текст в памяти:_QW_
P.S. "__LINE__" в C/C++ является встроенной константой, которая содержит в себе номер строки, в которой она указана.
Если у Вас появились какие-то вопросы, задайте их в комментариях под статьей !!!