簡體   English   中英

如何在Python中導入'GDB'

[英]How to import 'GDB' in Python

我正在使用Python 2.7和Python 3.1.3。 但是在我的Python中,我無法“導入gdb”。

它給我一個錯誤,因為:

>>> import gdb
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
ImportError: No module named gdb
>>>

這是什么原因? 我應該如何解決這個問題?

僅當您的Python代碼在GDB進程中運行時, import gdb才起作用。 它不應該在常規系統Python解釋器中工作。

說明

  • GDB嵌入了Python解釋器,因此它可以使用Python作為擴展語言。
  • 不能像從普通的Python庫那樣直接從/usr/bin/python import gdb ,因為GDB的結構不是庫。
  • 您可以做的是從gdb中source MY-SCRIPT.py (相當於運行gdb -x MY-SCRIPT.py )。

范例程序

這是一個自包含的示例。 將以下文件保存到t.py

import gdb
gdb.execute('file /bin/cat')
o = gdb.execute('disassemble exit', to_string=True)
print(o)
gdb.execute('quit')

跑:

$ gdb -q -x t.py 

並且您將看到exit()的PLT存根已反匯編。 在x86-64 Linux上:

Dump of assembler code for function exit@plt:
   0x0000000000401ae0 <+0>:  jmpq   *0x20971a(%rip)    # 0x60b200 <exit@got.plt>
   0x0000000000401ae6 <+6>:  pushq  $0x3d
   0x0000000000401aeb <+11>: jmpq   0x401700
End of assembler dump.

我一直在學習Python的GDB API收集了一些資源在這里

您可以按照本教程安裝PythonGDB Python代碼取決於C擴展名

對於Windows,最近在MinGW中 構建了足夠多的gdb構建 ,但是它似乎並未包含您可以導入的Python模塊(仍然支持gdb中的Python腳本)。 您必須先安裝MinGW ,然后使用mingw-get install gdb安裝gbd軟件包。

如果您使用Cygwin ,則Cygwin Ports中的 gdb仍然足夠新,沒有Python模塊但具有Python腳本支持。

我想可以在任何一個平台上從源代碼構建gdb並獲取Python模塊。

我現在無法測試,但我認為您需要配置和構建啟用Python的GDB。 看一下本指南

希望對您有所幫助。

我認為這已經過時了。 無論如何,您始終需要構建和配置啟用Python的GDB。

您可以使用Python編程語言編寫GDB腳本。 僅當使用--with-python配置GDB時,此功能才可用。

您必須使用該選項配置GDB:

--with-python=location

location是您要與GDB一起使用的python的位置。

嘗試調試Webkit時,我遇到了類似情況:

$ python Tools/gdb/webkit.py
Traceback (most recent call last):
  File "Tools/gdb/webkit.py", line 38, in <module>
    import gdb
ImportError: No module named gdb

然后,我意識到應該在gdb中調用此腳本以使其起作用:

(gdb) source Tools/gdb/webkit.py
(gdb) p run
$1 = (const WebCore::TextRun &) @0x7fffffffa450: {m_characters = "Plugin Testsa", m_len = 12, m_xpos = 0, 
  m_padding = 0, m_allowTabs = false, m_rtl = false, m_directionalOverride = false, 
  m_applyRunRounding = true, m_applyWordRounding = true, m_disableSpacing = false}

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM