2007/06/22
MSVCネタ(関数コールスタックが表示されないケース)
今日のネタは、MSVC(Microsoft Visual C++)使いには常識かもしれません。 と言うより、自分自身も以前経験したような気もしますが、このタイプのバグはgdbでたいてい見つけてしまうので、すっかり失念していました。
MSVCで落ちた時の関数コールスタックが次のようになることがあります。
アドレスゼロに対して関数呼び出しをした時、こうなります。
(こんなコードを書くことはありえませんが)要は、次のようなことをした時です。
typedef void (*fn_t)(); fn_t fn = NULL; fn();
ESPレジスタ(stack pointer)の値の指すメモリ領域を表示すれば、コールスタック上の関数のアドレスはわかります。しかし、アドレスゼロにジャンプしてスタックを破壊するわけでもないので、関数コールスタックを表示してくれないのは納得できません。
- Category(s)
- カテゴリなし
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/inoue/msvc-tips/tbping