C ++コンパイル済みプログラムでセグメンテーション違反の原因となった行を見つける方法

エイディン

私はvimC ++プログラミングに使用しています。コンパイルコマンドをctrl+cvimにバインドし、を実行して別のtmuxペインで実行し./main.outます。私の問題は、c ++プログラムでsegmentation faultエラーが発生したときに、どの行が問題の原因であるかわからないことです。しかし、でプログラムをコンパイルして実行するとvscode、エラーの原因となった行が表示されました。segmentation faultコンソールでプログラムのバイナリファイルを実行しているときにエラーなどのランタイムエラーを引き起こす行を見つける方法を探しています。これは私がしたときの出力例です./main.out

[1]    24656 segmentation fault (core dumped)  ./main.out
cigien

プログラムをコンパイルするときは、実行可能ファイルにデバッグシンボルを追加することで、-gコンパイラフラグを追加するか、さらに良い方法-ggdb3で出力をよりきれいにします。また、-O0最適化レベルでコンパイルするようにしてください

実際にプログラムをデバッグするには、を実行gdb ./main.outしてデバッグセッションでプログラムを開始します。その後、を実行するとr、gdbはプログラムの実行を開始し、segfaultを与える行で停止します。

その時点に到達した方法を理解するにbtは、デバッグセッション中に実行すると、クラッシュしたコード行に到達するために行われたすべての関数呼び出しを示すバックトレースが表示されます。

もちろん、これ以上のことを行うことができます(エラーの原因を特定することは、多くの場合、最初のステップにすぎないため、おそらくそうする必要があります)。を使用pして、変数の値を出力したり、ウォッチポイントを設定したりすることができますしばらくの間、gdbには本格的なPythonインタープリターが付属しているため、カスタムデバッグのニーズに合わせてPythonスクリプトを作成することもできます。

gdbの使い方を学ぶことは、最初は圧倒されるように思えるかもしれませんが、根気強く、努力が大きな成果を上げることを保証します:)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Cプログラムの問題を見つける方法:プログラム受信信号SIGSEGV、セグメンテーション違反

分類Dev

別のフォルダからc ++プログラムをコンパイルすると、実行可能ファイルでセグメンテーション違反が発生します

分類Dev

mmapとmapfileを使用したPosix-Cプログラムでのセグメンテーション違反

分類Dev

文字列を受け入れて印刷するための非常に小さなcプログラムでのセグメンテーション違反

分類Dev

MinGW でコンパイルされた C++ winapi テスト プログラムを実行しようとしたセグメンテーション違反

分類Dev

Cを使用して、コアダンプからセグメンテーション違反の原因となったアドレスを取得します

分類Dev

トライを使用したcプログラムのセグメンテーション違反

分類Dev

C ++の基本的なプログラムセグメンテーション違反

分類Dev

このCプログラムが実行時にセグメンテーション違反をスローするのはなぜですか?

分類Dev

異なる環境でCプログラムを実行するとセグメンテーション違反が発生する

分類Dev

セグメンテーション違反のある C プログラム

分類Dev

Cプログラムでこのエラーの原因は何ですか(セグメンテーション違反(コアダンプ))?

分類Dev

Sun c ++コンパイラでのセグメンテーション違反

分類Dev

セグメンテーション違反の原因となるCトライノードの再割り当て

分類Dev

Cでのセグメンテーション違反(コアダンプ)エラーを修正する方法

分類Dev

Linuxで1MBのファイルを作成するCプログラムを作成し、セグメンテーション違反を取得する

分類Dev

Linuxで1MBのファイルを作成するCプログラムを作成し、セグメンテーション違反を取得する

分類Dev

cの迷路プログラムにおけるセグメンテーション違反

分類Dev

Linuxでコンパイルされた以下のcコードのセグメンテーション違反

分類Dev

明らかに完璧なコードを持つCプログラムのセグメンテーション違反

分類Dev

スタンドアロンの実行可能ファイルとしてではなく、Cから実行したときにシェルコードのセグメンテーション違反が発生するのはなぜですか?

分類Dev

Cプログラムがセグメンテーション違反を起こすことがある

分類Dev

MPIを使用したCプログラムのセグメンテーション違反

分類Dev

C ++ LFSRプログラムのセグメンテーション違反

分類Dev

Cでのセグメンテーション違反を防ぐ方法(間違ったタイプの引数を取る場合)

分類Dev

Cプログラムのセグメンテーション違反(コアダンプ)

分類Dev

ハイブリッド(C ++、asm)プログラムでセグメンテーション違反が発生するのはなぜですか?

分類Dev

cの複数行printfの後、プログラムはセグメンテーション違反(コアダンプ)で終了しますか?

分類Dev

セグメンテーション違反(コアダンプ)動的配列を使用したCプログラムのエラー

Related 関連記事

  1. 1

    Cプログラムの問題を見つける方法:プログラム受信信号SIGSEGV、セグメンテーション違反

  2. 2

    別のフォルダからc ++プログラムをコンパイルすると、実行可能ファイルでセグメンテーション違反が発生します

  3. 3

    mmapとmapfileを使用したPosix-Cプログラムでのセグメンテーション違反

  4. 4

    文字列を受け入れて印刷するための非常に小さなcプログラムでのセグメンテーション違反

  5. 5

    MinGW でコンパイルされた C++ winapi テスト プログラムを実行しようとしたセグメンテーション違反

  6. 6

    Cを使用して、コアダンプからセグメンテーション違反の原因となったアドレスを取得します

  7. 7

    トライを使用したcプログラムのセグメンテーション違反

  8. 8

    C ++の基本的なプログラムセグメンテーション違反

  9. 9

    このCプログラムが実行時にセグメンテーション違反をスローするのはなぜですか?

  10. 10

    異なる環境でCプログラムを実行するとセグメンテーション違反が発生する

  11. 11

    セグメンテーション違反のある C プログラム

  12. 12

    Cプログラムでこのエラーの原因は何ですか(セグメンテーション違反(コアダンプ))?

  13. 13

    Sun c ++コンパイラでのセグメンテーション違反

  14. 14

    セグメンテーション違反の原因となるCトライノードの再割り当て

  15. 15

    Cでのセグメンテーション違反(コアダンプ)エラーを修正する方法

  16. 16

    Linuxで1MBのファイルを作成するCプログラムを作成し、セグメンテーション違反を取得する

  17. 17

    Linuxで1MBのファイルを作成するCプログラムを作成し、セグメンテーション違反を取得する

  18. 18

    cの迷路プログラムにおけるセグメンテーション違反

  19. 19

    Linuxでコンパイルされた以下のcコードのセグメンテーション違反

  20. 20

    明らかに完璧なコードを持つCプログラムのセグメンテーション違反

  21. 21

    スタンドアロンの実行可能ファイルとしてではなく、Cから実行したときにシェルコードのセグメンテーション違反が発生するのはなぜですか?

  22. 22

    Cプログラムがセグメンテーション違反を起こすことがある

  23. 23

    MPIを使用したCプログラムのセグメンテーション違反

  24. 24

    C ++ LFSRプログラムのセグメンテーション違反

  25. 25

    Cでのセグメンテーション違反を防ぐ方法(間違ったタイプの引数を取る場合)

  26. 26

    Cプログラムのセグメンテーション違反(コアダンプ)

  27. 27

    ハイブリッド(C ++、asm)プログラムでセグメンテーション違反が発生するのはなぜですか?

  28. 28

    cの複数行printfの後、プログラムはセグメンテーション違反(コアダンプ)で終了しますか?

  29. 29

    セグメンテーション違反(コアダンプ)動的配列を使用したCプログラムのエラー

ホットタグ

アーカイブ