みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VSのデバッグ出力内容をまとめてファイルに保存

 ご質問させていただきます。
どうぞよろしくお願い致します。

【環境】VS2013 Express(C#) + Windows10Pro になります。
(演算プログラムは趣味でよく作りますが、C・C#についてはまだまだ勉強中のレベルでございます。)

 デバッグ実行するとVS画面下の「出力」タブに例外発生時の情報など沢山出てくると思います。
この内容すべてをデスクトップにテキストファイルで保存する方法を探しておりますが見つかっておりません。

 現状、数時間ごとに、プログラム実行を停止する度に
「出力」タブで全選択→コピー→テキストエディタ起動→貼り付け→ファイル名を現在の日時にして保存
とし続けておりますが、この作業が非常に手間なのと、つい再実行してしまい履歴を残し損ねてしまう事が時々あります。

 実行中にテキストファイルに都度1行ずつ書き込むのではアプリケーション実行速度自体が遅くなるため、最後にまとめて手動で保存している次第でございます。
(↑マイクロ秒オーダーでの実行速度の確認をConsole.WriteLineで確認するなどしております)

 どうにかして自動化できるよい方法はございませんでしょうか?

 もしお詳しい方がいらっしゃいましたら、何卒よろしくお願いいたします。

投稿日時 - 2019-02-06 22:46:21

QNo.9585338

困ってます

質問者が選んだベストアンサー

WindowsAPIのOutputDebugStringで出力された文字列を、取得すようにすればいいと思います。
自前で用意すれば、保存なども思い通りにできますが、作る手間はかかります。
参考にするなら、この辺り

OutputDebugStringで出力したデバッグライトを自前で受け取る
http://www.iot-kyoto.com/satoh/2016/01/19/win32api-001/

出来合いのものでよければ、

DebugView for Windows
https://technet.microsoft.com/ja-jp/sysinternals/debugview.aspx

など。

投稿日時 - 2019-02-07 12:15:44

補足

 BAに迷いましたが、
アプリケーションの実行速度を維持したまま出力する、というのが今回の悩みでしたので、
それを解決できそうなこちらをBAとさせていただきました。

 重ね重ねどうもありがとうございました。m(_ _)m

投稿日時 - 2019-02-13 23:36:53

お礼

 どうもありがとうございます!m(_ _)m
 
 MS製なんですねこれ。存じませんでした。
 あとOutputDebugStringですが、リンク先を見ますと
>出力先が共有メモリ
という事で、ファイルへのテキスト出力より断然早そうなので、今回の件には有効そうです^^

 ご親切にアドバイスいただき、またリンクも貼っていただき
誠にありがとうございました!!m(_ _)m

投稿日時 - 2019-02-13 23:35:06

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

TraceクラスのWriteメソッドを使えば、デバッグ出力として出力できる以外にも、任意のファイルやWindowsのイベントログにも出力できます。当然、デスクトップ上のファイルにも出力できます。
出力先の指定はTraceListenerで指定できます。TraceやTraceListenerで検索すれば、情報は集まると思います。

投稿日時 - 2019-02-09 21:56:23

お礼

 Writeメソッドを使うという事はおそらく、実行中に出力するという事でしょうか?
今回は「実行中に出力してしまうとアプリケーションの実行速度が遅くなってしまう」という案件なのでしたが、
でも教えていただいた後にずっと考えておりますと、もしかしたら
Task.Factory.StartNew(() => Trace.WriteLine
のような事を毎回やっておけば実行速度は遅くならないのかな?などと思いました。
 まだコーディング中で検証できておりませんが。。。orz
 
 この度はご親切にお教えいただき誠にありがとうございました!!
m(_ _)m

投稿日時 - 2019-02-13 23:36:16

ANo.1

作成されたexe >c:¥temp¥cosole.log
などとして実行した時ファイルに吐かれるのではないでしょうか。

投稿日時 - 2019-02-06 23:19:06

お礼

 どうもありがとうございます!!m(_ _)m
 
 これはコマンドプロンプトからの起動でしょうか??
(私の理解が追いついていたかったら申し訳ございません。。。)
VSで実行したいので、できればexeからの起動ではないほうが良いのですが、
でもログファイルに出せる方法は存じませんでしたので、今後使えそうです。
 この度はお教えいただき誠にありがとうございましたm(_ _)mm(_ _)m

投稿日時 - 2019-02-13 23:33:59

あなたにオススメの質問