gdbのブレークポイントで停止すると、filename.cppが表示されます。このファイルの絶対パス名はどのように表示できますか?GDBでファイルの完全なパスを表示する方法は?
15
A
答えて
18
info source
コマンドを使用して、現在のスタックフレームの情報を取得します。 Pythonスクリプトを学ぶためにPythonスクリプトで
(gdb) info source Current source file is /build/gtk+2.0-LJ3oCC/gtk+2.0-2.24.30/modules/input/gtkimcontextxim.c Located in /home/sashoalm/Desktop/compile/gtk+2.0-2.24.30/modules/input/gtkimcontextxim.c Contains 1870 lines. Source language is c. Producer is GNU C11 5.3.1 20160225 -mtune=generic -march=i686 -g -g -O2 -O2 -fstack-protector-strong -fPIC -fstack-protector-strong. Compiled with DWARF 2 debugging format. Does not include preprocessor macro info.
1
、またはあなただけの完全なパスと他には何も表示したい場合:ここで
は、その出力の一例である
をclass Curpath(gdb.Command):
"""
Print absolute path of the current file.
"""
def __init__(self):
super().__init__('curpath', gdb.COMMAND_FILES)
def invoke(self, argument, from_tty):
gdb.write(gdb.selected_frame().find_sal().symtab.fullname() + os.linesep)
Curpath()
使用法:
curpath
0
Ciro Santillからの優秀な回答。しかし、スクリプトはgdb 8.0.1で動作するには小さな修正が必要でした。
テキストをクリップボードにコピーするように変更したので、すぐにvimで使用することができます。 file_line.vimプラグインでうまく動作します。これは、スクリプトによって生成さクリップボードの内容の一例です:
/home/ops1/projects/test01/main.cpp:5
スクリプトは以下の通りです:
- pyperclipをインストールします。ここでは
import pyperclip class Clippath (gdb.Command): """print absolute path""" def __init__(self): super(Clippath, self).__init__("clippath", gdb.COMMAND_USER) def invoke(self, arg, from_tty): symtabline = gdb.selected_frame().find_sal() pyperclip.copy(symtabline.symtab.fullname() + ":" + str(symtabline.line)) Clippath()
はそれをすべてを動作させるためにステップですPythonライブラリ sudo zypper in python3-pyperclip
- 上記のスクリプトをファイルに保存して、file-path.pyと入力して〜/ .gdbにコピーします次の行を追加して
- アップデートは〜/ .gdbinit: ソース〜/ .gdb/
- は今、あなたはGDBに
clippath
でクリップボードへのパスと行をコピーすることができfile-path.py
そして、GDB Python APIの詳細を参照してください。link
関連する問題
- 1. Tox/Py.testで完全なPython Tracebackを表示する方法
- 2. J2MEで完全なHTTP POST要求を表示する方法
- 3. Firefox 3でローカルファイルの完全なパスを取得する方法
- 4. Xcode 4ファイルの完全なパス
- 5. ASP.NETアプリケーションの完全な仮想パスを取得する方法
- 6. Javaでスーパークラスメソッドを完全に非表示にする方法
- 7. 私のプログラムでは、完全なパス
- 8. gitインデックスに存在する完全なファイルを表示
- 9. Cで完全なファイルのアクセス権を付与する方法
- 10. 完全なエラーの説明を表示
- 11. BottomSheetDialogFragment - コンテンツをラップして完全に表示する方法
- 12. dockedItemsツールバーを完全に非表示にする方法
- 13. 完全なパスなしでフォルダと親フォルダ間をコピーする方法
- 14. eclipseで完全なスタックトレースを表示するには?
- 15. PHPStormで完全なファイルパスを表示するには?
- 16. Drupalレンダリングの不完全な表示
- 17. 完全なアプリのロングネームを表示するには?
- 18. .NETでMSエクスプローラへの完全修飾パスを取得する方法は?
- 19. MySQLで表示する完全なIPアドレスを取得する
- 20. straceの完全な引数を中括弧で表示する
- 21. ディレクトリ全体のパスを含まないファイル名のみを表示する
- 22. Localhost web-app。ブラウザでファイルへの完全なパスを取得する
- 23. Simplepie:完全なブログ記事を表示するには?
- 24. 完全な文章を.txtファイルに入力する方法C++
- 25. javascript&cssで完全に表示されない行を非表示にする
- 26. M3Uファイルの場所を完全修飾パスに解析する
- 27. 完全な水平パスのSVGグラデーション
- 28. UWP - ImageBrush ImageSourceへの完全なパス
- 29. 完全な単語のマッチング方法は?
- 30. bitstringで完全なファイルを読む方法
このコマンドは、* current *ブレークポイントに関する情報を表示し、特定の関数でブレークポイントをヒットするのに時間がかかることがあります。この場合、 'jump 'でその関数にジャンプさせると便利です。 –
mMontu