実行ファイルで使用されるcファイルでセグメンテーションフォルトを見つけようとしていますが、リードが見つかりませんでした。誰もこれを行う方法を知っていますか?gdbを使用して.exeファイル内のセグメンテーションフォルトを見つける方法
答えて
gdbを実行してgdbからプログラムを実行し、バックトレースを使用します。 stackコマンドを得ることができます。スタックフレームは、framコマンドを参照し、printを使用して変数の値をチェックします。インターネット経由でgdb tips \ docsを確認してください。 gdbを使用すると、クラッシュしたプログラムによって生成された既存のコアファイルを読み込んで、問題が発生した場所を見つけることができます。ロードされたコアファイルは、クラッシュポイントでの状態に等しく、単にバックトレースを使用します。あなたの質問に
回答はここにあった:
が int main() {
int *pVal = NULL;
printf("ptr value is : %d", *pVal);
return 0;
}
あなたがするために、デバッグモードでコンパイルする必要があり、次のとおりです。ここ
int main() {
int *pVal = NULL;
printf("ptr value is : %d", *pVal);
return 0;
}
Determine the line of C code that causes a segmentation fault?は間違いなくセグメンテーションフォールトを引き起こすサンプルプログラムです実行ファイルに追加のデバッグ情報を追加します。
gcc -g segFault.c
それから、gdbを実行して実行可能ファイルのパス(この場合はa.out)を指定するだけです。そして、それを実行するだけで、gdbがセグメンテーション違反を引き起こす行をハイライト表示することがわかります。
~/Dropbox/cprog/demos : $ gdb a.out
GNU gdb (GDB) 7.12
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin15.6.0".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from a.out...Reading symbols from /Users/rohankumar/Dropbox/cprog/demos/a.out.dSYM/Contents/Resources/DWARF/a.out...done.
done.
(gdb) run
Starting program: /Users/rohankumar/Dropbox/cprog/demos/a.out
Program received signal SIGSEGV, Segmentation fault.
0x0000000100000f62 in main() at segFault.c:6
6 printf("ptr value is : %d", *pVal);
また、値を印刷してプログラムのスタックトレースを表示することもできます。 gdb hereについて詳しく読むことができます。
ハッピーコーディング!
* nix Dropboxはありますか?ニート! – Swift
- 1. Boostを使って$ PATH内のexeを見つける方法
- 2. ビジュアルスタジオを見つける方法2012 .exe
- 3. PHPを使用してkmlファイル内の場所を見つける方法
- 4. JavaScriptを使用してファイル名を見つける方法
- 5. nsisスクリプトを使用してexeファイルを別のexeファイルにバンドルする方法
- 6. 要因を見つける際のセグメンテーションフォルト
- 7. C#を使用してASP.NETアプリケーション内のフォルダ内のファイルを見つける方法は?
- 8. オブジェクトの属性を使用してバイナリツリー内のノードを見つける方法
- 9. jqueryを使用してスパン内の値を見つける方法は?
- 10. Java.io APIを使用してローカルネットワーク内のlantronixデバイスを見つける方法
- 11. powershellパターンマッチングを使用して.batファイルを見つけて実行する方法
- 12. ファイルを読み取ってフォルダ内で見つける方法
- 13. Javaを使用してファイルから整数の型を見つける方法
- 14. コマンドプロンプトを使用してWindowsで特定のファイルを見つける方法
- 15. solarisのexeファイルの内容を見る方法
- 16. タイムスタンプを使用して前の行を見つける方法
- 17. 正規表現を使用してファイル内のすべてのハンドルバー部分を見つける方法
- 18. GDBのソースコード内の空白のデータ値を見つける
- 19. JS関数内で$(this)を使用してattrを見つける方法は?
- 20. ツリーを使って特定のファイルを見つける方法
- 21. gdbを使用してexeをデバッグする
- 22. EXEファイルでフック/迂回する機能アドレスを見つける方法は?
- 23. バッチスクリプトを使用してファイル内のテキストを見つけて置き換える方法
- 24. Postgresql:Mac OS Xを使用してpg_hba.confファイルを見つける方法
- 25. xsltを使用してxmlファイル内の特定の要素を見つける
- 26. PHPを使用してアーカイブ内の特定のファイルを見つける
- 27. WAPページを使用してモバイルモデルを見つける方法
- 28. プロファイラを使用してメモリリークを見つける方法
- 29. Powershellを使用して、ファイルフルネームでマウントポイントドライブを見つける方法
- 30. dynastyjs:セカンダリグローバルインデックスを使用してアイテムを見つける方法
gdbでのデバッグについては、ウェブ全体で何も見つかりませんでしたか? – kaylum
@kaylumそれは戦闘機クラブのようなものです。あなたが必要とするものを見つけるためには、必要なものを知っておく必要があります。現代の検索エンジンは新しいトピックで悪いです。彼らは関連性によって新しいものを押しのけようとします。良いガイドhttps://beej.us/guide/bggdb/ – Swift
何も見つかりませんでした。 Swiftが私に与えたリンクから、私は私の検索クエリに特化していて、十分に広い検索をしていなかったと思う。 – user3304124