質問: %d\n",__FILE__,__LINE__ ); これに相当するものを知りたいです。 あと、トレースした部分をログファイルに書き出してくれる機能とか あるのでしょうか?あれば教えてください。 (とりあえず、聞いてみてるだけです。) VC++は、2008ExpressEditionと.NET 2003を使っています。
回答: > > VC++は、2008ExpressEditionと.NET 2003を使っています。 > > > まず、最初に確認ですが、作成されたいアプリケーションのタイプは、 * Windows ネイティブアプリケーション * .NET アプリケーション のどちらでしょうか? 「Visual C++ .NET 2003」「Visual C++ 2008 Express Edition」のどちらでも 「Windows ネイティブアプリケーション」「.NET アプリケーション」を作成可能ですが、 それぞれの開発環境により、利用可能なライブラリや構文が異なるので注意が必要です。 主なライブラリの使用用途としては、 * Visual C++ .NET 2003 + Win32 ... C/C++ と Win32 API によるネイティブアプリケーション作成用 + MFC ... GUI アプリケーション(ネイティブアプリケーション)作成用 + ATL ... コンポーネント作成用 + .NET(Managed C++)... .NET アプリケーション作成用(古い構文を使用) * Visual C++ 2008 Express Edition + Win32 ... C/C++ と Win32 API によるネイティブアプリケーション作成用 + CLR(VC++/CLI)... .NET アプリケーション作成用(新しい構文を使用) という感じでしょうか。 「Visual C++ 2008 Express Edition」を使用されているということですので、 「CLR(VC++/CLI)」を使用して「.NET アプリケーション」を作成した場合について説明致します。 > > 1.タイムスタンプ(HH:MM:SS)を表示させる方法 > > > .NET のライブラリでは日付型を「HH:mm:ss」で書式化することで 「HH:MM:SS」の形式で表示されます。 ``` ■ @IT:.NET TIPS 日付や時刻を文字列に変換するには? - C# VB.NET ``` > > 2. ライン数を表示させる方法 > > > StackTrace を用いることでファイル名、行番号が取得可能です。 ただし、最適化の関係で、デバッグ版でしか正しい行番号が取得できないようです。 ``` ■ StackTrace クラス (System.Diagnostics) http://msdn.microsoft.com/ja-jp/library/system.diagnostics.stack... ``` > > トレースした部分をログファイルに書き出してくれる機能 > > > DefaultTraceListener にて出力先のファイル名を指定することで、 トレースした内容をログファイルに出力することが可能です。 ``` ■ @IT:.NET TIPS デバッグ・メッセージをファイルに出力するには? - C# VB.NET VS.NET http://www.atmarkit.co.jp/fdotnet/dotnettips/146debugonfile/debu... ``` 以下は、サンプルになります。 Release ビルドでも Debugt::WriteLine() でファイル出力してしまうようですので、#if defined(_DEBUG) を用いて Debug ビルド時のみ出力するようにしています。 ``` // File : DebugWriteLineTest.cpp // Compile : cl DebugWriteLineTest.cpp /clr /D "_DEBUG" /FU "c:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll" [Enter] // Usage : DebugWriteLineTest.exe [Enter] using namespace System; using namespace System::Diagnostics; int main(array ^args) { #if defined(_DEBUG) // ■ @IT:.NET TIPS デバッグ・メッセージをファイルに出力するには? - C# VB.NET VS.NET // http://www.atmarkit.co.jp/fdotnet/dotnettips/146debugonfile/debugonfile.html DefaultTraceListener^ dtl = (DefaultTraceListener^)Debug::Listeners["Default"]; dtl->LogFileName = "C:\\TEMP\\debug.txt"; #endif // ■ @IT:.NET TIPS 日付や時刻を文字列に変換するには? - C# VB.NET // http://www.atmarkit.co.jp/fdotnet/dotnettips/200customdate/customdate.html DateTime^ dt = DateTime::Now; Debug::WriteLine( "DateTime: " + dt->ToString("HH:mm:ss") ); // ■ StackTrace クラス (System.Diagnostics) // http://msdn.microsoft.com/ja-jp/library/system.diagnostics.stacktrace.aspx StackTrace^ st = gcnew StackTrace(true); StackFrame^ sf = st->GetFrame(0); Debug::WriteLine( "File: " + sf->GetFileName() ); Debug::WriteLine( "Line Number: " + sf->GetFileLineNumber().ToString() ); Debug::WriteLine( "Hello World" ); return 0; } ``` <実行結果(C:\TEMP\debug.txt の内容)> ``` DateTime: 19:19:36 File: c:\home\edu\vs2008\vc9\clr\debugwritelinetest\debugwritelinetest\debugwritelinetest.cpp Line Number: 19 Hello World ```