Отладка Dll : информация, как можно выводить отладочную печать / лог при отладке Dll

 

Случайно вспомнил :-).

.

В случае с Dll совершенно некуда сделать отладочную печать- 

кроме MessageBox можно придумать разве что дополнительный Exe,

который будет отображать строчки, пересланные ему, например,

через WM_COPYDATA.

.

Но на самом деле эта проблема уже решена -

для отладочной печати есть замечательная штатная функция OutputDebugStringA.

И ничего, что ее обычно используют для отладки драйверов.

.

Сообщения, которые кидает OutputDebugStringA,

можно просматривать при помощи это программы:

http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx

 
jartmailru >>:

Но на самом деле эта проблема уже решена -

Не совсем. Если к дллке обращаются сразу несколько процессов, получится не очень красиво.


1. Можно сохранять в файл, отдельный для каждого процесса.

2. Можно сохранять в собственный буфер и опрашивать, из mql кода, а выводить уже можно нативными средствами.


А вообще нужная софтина, ага.

 

Если несколько процессов- то там, возможно, потребуется более сложное решение-

какой-нибудь GetCurrentThread() или GetCurrentThreadId() дает идентификатор,

который добавляется к каждой строчке- и всё пузырится- в простейшем случае-

все тем же WM_COPYDATA в окно самописного логгер-менеджера,

найденного по FindWindow(). Да хоть по Tcp/Ip на сервак логов.

А уж он разруливает- то ли ему в файл писать, то ли вкладочки рисовать

и когда на диск буфера скидывать (если скидывать).

.

Но многопоточность и отладка - это, мне кажется, не совсем наш случай :-)

Причина обращения: