0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OutputDebugStringを使ったDebugViewのログ取得

Last updated at Posted at 2024-10-09

実行ファイルなどのログ取得をしたいときにDebugViewを使うのですが、時間がたつと使い方を忘れてしまうことが多いので、すぐ使えるようにまとめようと思います。

OutputDebugString

OutputDebugStringを使用したログ取得方法です。
この関数を使用するには、アプリケーションにWindows.hヘッダーを含める必要があります。

void OutputDebugStringA([in, optional] LPCSTR lpOutputString);

lpOutputStringで指定した文字列を取得します。
関数名にDebugと入っていますが、Releaseビルドしたものでも出力されます。

format

文字列だけをログ表示したい場合は上記の方法で良いですが、値もログ出力したい場合はFormatを使用します。

namespace std {
  template<class... Args>
  string format(format_string<Args...> fmt, Args&&... args);

  template<class... Args>
  wstring format(wformat_string<Args...> fmt, Args&&... args);

  template<class... Args>
  string format(const locale& loc, format_string<Args...> fmt, Args&&... args);

  template<class... Args>
  wstring format(const locale& loc, wformat_string<Args...> fmt, Args&&... args);
}

argsを書式文字列fmtに従って設定し、文字列を返します。

formatはC++20以降で使用できるため、C++17などを使っている場合はC++言語標準を変更する必要があります。
C++言語標準はプロジェクトのプロパティ>全般のC++言語標準で変更できます。

formatライブラリをインクルードしないと使用できないため、忘れずに追加してください。

#include <format>

以下、aとbの和をログ表示する処理と結果になります。
OutputDebugStringAは

int a = 5, b = 2;
int sum = a + b; 

auto test = format("sum: {}", sum);
OutputDebugStringA(test.c_str());

result

参考にしたサイト

https://learn.microsoft.com/ja-jp/windows/win32/api/debugapi/nf-debugapi-outputdebugstringa
https://learn.microsoft.com/ja-jp/windows/win32/api/debugapi/nf-debugapi-outputdebugstringw
https://cpprefjp.github.io/reference/format/format.html

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?