Есть ли C ++ 11 или Win32 способ надежно генерировать и сохранять информацию трассировки?

Я работаю над компонентом COM в C ++ 11 (VS2013), который загружается в другой процесс в песочнице — хотя с возможностью записи на диск.

Я написал свою собственную функцию трассировки, которая входит в критический раздел / мьютекс, открывает файл для добавления, записывает метку времени и сообщение, покидает мьютекс и возвращает.

Однако я нахожу, что эта функция трассировки, которую я написал, немного ненадежна: некоторые утверждения терпят неудачу по неизвестным в разных системах причинам — это немного иронично, учитывая, что функции трассировки используются для отслеживания других проблем. Поэтому мне нужна надежная система отслеживания.

Существует ли какая-либо функция в стандартной библиотеке CRT, C ++ или Win32, которая обеспечивает очень простую функцию ведения журнала «забей и забудь», которая (в общем случае) не даст сбой? я видел ReportEvent но я не думаю, что это будет работать в моем случае из-за песочницы.

0

Решение

Вы должны изучить Event Tracing для Windows. Это в значительной степени соответствует вашим потребностям: вы вызываете EventRegister () в начале вашего приложения, а затем вызываете EventWrite (), чтобы сообщить о событии. Вам не нужны никакие специальные системные разрешения — даже запись на диск. Когда ваша программа работает нормально, она не будет генерировать никакого вывода. Однако, если кто-то прослушивает события (например, с помощью устройства записи производительности Windows), эти события окажутся в файле трассировки, который можно просмотреть с помощью различных программ (вы даже можете написать слушателя самостоятельно, если вы предпочитаете это) ,

http://msdn.microsoft.com/en-us/library/windows/desktop/aa364162%28v=vs.85%29.aspx

2

Другие решения


По вопросам рекламы [email protected]