概要 anchor.png Edit

スタックトレースを表示します。 例外でプログラムが強制終了した場合などに、スタックトレースを調べることでその原因となった関数を知ることができます。 コンパイル時に -g を渡すことでスタックトレースが表示されるようになります。(dmd 2.053 からできるようになったようです) サンプルは Windows によるものです。

Page Top

サンプルコード anchor.png Edit

Everything is expanded.Everything is shortened.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
 
 
 
 
-
|
!
 
 
-
|
|
!
 
 
-
|
-
|
!
!
module test;
 
import std.file;
 
void main()
{
  func1();
}
 
void func1()
{
  A a = new A();
  a.func2();
}
 
class A
{
  void func2()
  {
    std.file.read(null);
  }
}
Page Top

コンパイル anchor.png Edit

1
2
3
chcp 65001
dmd -g test.d
test.exe

今回のサンプルでは文字化けを起こすため、chcp コマンドによりコードページを UTF-8 に変更しています。

Page Top

実行結果 anchor.png Edit

1
2
3
4
5
6
std.file.FileException@std\file.d(308): : 指定されたパスが見つかりません。
----------------
C:\dmd2\projects\test\test.d(45): void test.A.func2()
C:\dmd2\projects\test\test.d(37): void test.func1()
C:\dmd2\projects\test\test.d(31): _Dmain
----------------

main が func1 を呼び出し、func1 が A.func2 を呼び出して std.file.read 関数が失敗していることがわかります。 ライブラリファイルを作成する場合にも コンパイラに -g を渡せば、スタックトレースが表示されるようです。

Page Top

投票とコメント anchor.png Edit

Choices Vote
大変参考になった0  
参考になった1  
あまり参考にならなかった0  
まったく参考にならなかった0  

No comment. コメント​/HowTo​/スタックトレースを表示するEdit

Name:

Front page   Edit Freeze Diff Backup Upload Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 1998, today: 1, yesterday: 0
Princeps date: 2011-08-17 (Wed) 19:23:22
Last-modified: 2011-08-17 (Wed) 19:23:22 (JST) (3397d) by SHOO
メインメニュー

ログイン

ユーザー名:


パスワード:





パスワード紛失  |新規登録

Menu