скрытое меню

TraceView.exe визуальная прога для трассировки

Отладка примера VirtulaSerial

Это так называемый User Mode Driver. Внутри используется трассировка WPP (DbgPrint - это для отладки ядра [кернел]).

В примере встречаются такие команды :


        Trace(
            TRACE_LEVEL_ERROR,
            L"ERROR: Cannot create device interface (%!GUID!)",
            pGuid
            );

Короче очень много времени ушло на то , чтобы увидеть хоть какие-то свои сообщения. У меня быстрее всего получился вариант с TraceView.

Его и опишу кратко:

У нас:
Win7-64
WinDDK7 (C:\WinDDK\7600.16385.1)
пример C:\WinDDK\7600.16385.1\src\serial\VirtualSerial, собираем появляется подкаталог \objchk_win7_amd64\amd64

Запускаем C:\WinDDK\7600.16385.1\tools\tracing\amd64\traceview.exe от Админа

Create New Log Session
фотка 1

Add Provider
фотка 2

Выбираем pdb файл (появляется после сборки проекта virtualserail =
C:\WinDDK\7600.16385.1\src\serial\VirtualSerial\objchk_win7_amd64\amd64\virtualserial.pdb)

фотка 3

Log Trace Event data to file

фотка 4

Появится файл LogSession_050818_141804.etl - это файл логов специального формата , который текстовым редактором не просматривается. Но в traceView все будет видно, только пока там ничего нет:

фотка 5

Можно например добавить в device.cpp в функцию CMyDevice::CreateInstance(...)

Trace(
		TRACE_LEVEL_ERROR,
		L"ERROR: ================== CreateInstance ================ (%!GUID!)",
		&GUID_DEVINTERFACE_MODEM
		);

Далее :
остановите ваш Log
попробуйте удалить вручную virtualserial.pdb. Если удаляться он не захочет , надо поудалять в диспетчере устройств все ваши virtualserial Com порты. Далее все-таки удалите virtualserial.pdb - т.к. там не будут прописаны ваши новые trace команды пока его держит WUDFHost.
пересборка проекта

фотка 1

И где же наше добавленное сообщение ERROR: ================== CreateInstance ================ ?

Тут есть такая проблема: Сначала надо удалить в диспетчере устройств все наши созданные Virtual Con порты ВМЕСТЕ С ДРАЙВЕРАМИ !
теперь надо как-то сгенерировать заново pdb файл, я для этого удаляю его и еще *.res (тогда он создается заново)
делаем build ...
tmf - файлы надо заново создать
и теперь надо в TraceView заново открыть pdb файл , т.е. заново создать New Log Session или будет быстрее сначала сохранить в workspace , а потом просто восстановить из workspace (pdb файл заново открывается)

Ну и тогда наш новый trace(...) становится виден :

фотка 2

Много раз тыркать одни и те же кнопки при внесении всего одного trace(..) в программу - занятие для обезьян, а мы таковыми себя уже не считаем. Поэтому в следующей странице пытаемся все автоматизировать с помощью консольных команд.

Всем удачи!