3

GDB を使用して、このようにキャッチします。

catch throw

例外がスローされると、プログラムは停止します。

例外がスローされたときにGDBが停止しないようにする方法はありますが、プログラムによってキャッチされますか? または、GDBを使用せずにグローバルなtry-catchを使用する必要があります

catch throw

?

編集1

try
{
  // every time exception is thrown
  // program is stopped by GDB
}
catch(const std::exception &e)
{
  // even if the exception is caught by the program
}

EDIT2開始 gdb

gdb
file /usr/home/user/program
shell ps x
attach #pid
catch throw
c
4

1 に答える 1

4

catch throwスローされたすべての例外をキャッチしますが、それを制限する方法はありません。

ここには、少なくとも 2 つのオプションがあります。まったく使用できない可能性がcatch throwあり、UNIX のフレーバーを使用している場合は、例外がスローされた時点でセグ フォールトが発生し、例外がキャッチされない場合は停止します。

別の方法として、ftp: //ftp.gnu.org/pub/old-gnu/Manuals/gdb/html_node/gdb_30.html__raise_exceptionに見られるようにブレークポイントを設定することもできます(これは、Google を使用したときの最初のヒットでした - 調査してみてください) Stackoverflow に投稿する前に自分で)。

于 2012-12-09T05:20:58.817 に答える