問題タブ [stack-unwinding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1293 参照

windbg - WinDbg で「動的関数テーブル エントリを読み取れません」というメッセージを無効にすることはできますか?

私は、実行時に多くのコードを生成するプログラムを使用しており、そのコードのアンワインド データを生成していないようです。(このプログラムのソース コードはありません。プラグインを作成しています。)

プログラムがハングしたら、WinDbg で侵入し、すべてのスレッドのスタック トレースを取得しようとします~* k。スタック トレースだけでなく、次の行に沿ってメッセージのページとページ (およびページなど) も取得します。

これは、印刷に 1 分以上の長い時間がかかり、スクロール バッファがオーバーフローするため、ほとんどの出力が失われます。

私は今のところ、このメッセージを含む DLL を 16 進編集することでこれを回避しましたが、真剣に. このメッセージを取り除く公式の方法はありますか?

問題のスレッドからのくだらないスタック トレースの準備ができています。

0 投票する
3 に答える
2504 参照

rust - Rust は、スタックの巻き戻し中にデストラクタを実行するかどうかをどのように判断しますか?

のドキュメントはmem::uninitialized、その関数を使用することが危険/安全ではない理由を指摘してdropいます。初期化されていないメモリでの呼び出しは、未定義の動作です。

したがって、このコードは未定義である必要があります。

ただし、安全なRustで動作し、未定義の動作に悩まされていないように見える次のコードを書きました。

他のデストラクタを無視しながら、常に正しいデストラクタを実行しているようです。aまたはb(のa.disp()代わりに)を使用しようとするt.disp()と、初期化されていないメモリを使用している可能性があると正しくエラーが発生します。私が驚いたのはpanic、の値に関係なく、常に正しいデストラクタを実行する (期待される文字列を出力する) ことiです。

これはどのように起こりますか?ランタイムが実行するデストラクタを決定できる場合、実装された型に対して強制的に初期化する必要があるメモリに関する部分を、上記のリンクのDropドキュメントから削除する必要がありますか?mem::uninitialized()

0 投票する
3 に答える
843 参照

c++ - これは例外未定義の動作を伴う c_str の使用ですか?

次のような類似のコード スニペットをいくつか見てきました。

コメント の次の行では、を使用して関数Is this okay?に割り当てられた C スタイルの文字列を読み取ります。スタックの巻き戻しで文字列が破壊されるため、これは未定義の動作ですか?foostd::string


それが実際に未定義の動作である場合、main関数をこれに置き換えたらどうなるでしょうか?

キャッチがないため、コンパイラは強制的にスタックをアンワインドしませんが、結果をwhat()コンソールに出力してプログラムを中止します。それで、それはまだ未定義の動作ですか?

0 投票する
0 に答える
1956 参照

c++ - エラー C2712 オブジェクトの巻き戻しが必要な関数では __try を使用できません

Windows サービスをインストールして開始する単純な C++ WIN32 API プログラムを作成しています。コードで SEH __try&__finaly を使用しています。残念ながら、次のような既知のエラーが発生します。

error C2712 Cannot use __try in functions that require object unwinding.

SEHコードをメイン関数から別の関数に移動したり、プロジェクトのプロパティでエラーを再生したりするなど、おなじみの方法で解決しようとしました:C++例外を有効にします。しかし、何も機能しませんでした。とにかく、これはソースです: