我想在gdb提示符內使用python腳本執行linux命令(例如.bt,break,frame等)。 例如:我使用subprocess.call(["gdb"], shell=True)
此行帶我到(GDB)提示符下執行GDB命令之後卻當我嘗試 subprocess.call(["backtrace"], shell=True)
它顯示/ bin/sh的:回溯:找不到命令Python腳本:如何使用python腳本在gdb提示符內執行unix命令..?
1
A
回答
2
backtrace
ISN」一個linux命令,這是一個gdb
命令。
如果你想命令發送到popen'd GDB會話,你必須通過stdin
推他們,像...
import subprocess
gdb = subprocess.Popen(['gdb'], stdin=subprocess.PIPE)
gdb.stdin.write('backtrace\n')
2
命令鍵入到(gdb)
提示像回溯,break,frame等都是gdb命令。只有gdb知道如何解釋它們,並且它們不能與subprocess.call()
一起工作,因爲後者只能運行Linux可執行文件。
有兩種方法實現了接近你想要什麼:
- 開始的Python的控制下GDB和使用GDB/MI協議來說話吧。這就是pyclewn的工作原理。例如。
p = subprocess.Popen(['gdb', '-i=mi'], stdin=fd_in, stdout=fd_out)
。另請參閱https://bitbucket.org/minami/python-gdb-mi/src/tip/gdbmi/session.py?at=default - 使用GDB的內置Python腳本。 (API Reference)例如
保存這t.py
import gdb
gdb.execute('set confirm off')
gdb.execute('file /bin/true')
gdb.execute('start')
gdb.execute('backtrace')
gdb.execute('quit')
然後運行:
$ gdb -q -x t.py
Temporary breakpoint 1 at 0x4014c0: file true.c, line 59.
Temporary breakpoint 1, main (argc=1, argv=0x7fffffffde28) at true.c:59
59 if (argc == 2)
#0 main (argc=1, argv=0x7fffffffde28) at true.c:59
$
相關問題
- 1. 如何從python的命令提示符執行腳本
- 2. 如何在Python腳本中執行UNIX命令
- 3. 在python腳本中執行mysql命令
- 4. Python腳本在終端執行命令
- 5. 從命令行執行python腳本,Linux
- 6. 在命令提示符下運行命令中使用python腳本
- 7. 在hive腳本中執行unix命令
- 8. 如何在python腳本中執行多個命令的命令
- 9. 如何使用python腳本在sudo後執行一組命令
- 10. 如何在命令提示符中退出python腳本
- 11. 從Python腳本執行命令
- 12. 從python腳本執行linux shell命令
- 13. 使用Windows運行python腳本AT命令行提示
- 14. 如何在UNIX中使用mule執行命令/腳本文件?
- 15. Python Shell腳本。 Chain Unix OpenSSL命令
- 16. 使用UNIX腳本/命令
- 17. Teradata - 在Unix上運行文件/腳本Linux命令提示符
- 18. 如何使用python腳本執行ftp命令「put'FILE_NAME'」
- 19. 如何創建可執行的命令提示符腳本
- 20. bash腳本,它執行一個提示用戶的python腳本
- 21. 作爲Windows腳本命令執行Python腳本的輸出
- 22. 從命令提示符運行python腳本
- 23. 運行Python腳本無字「蟒蛇」 - 命令提示符
- 24. 命令提示符腳本命令「cd」
- 25. 在python腳本中使用argparse執行python腳本
- 26. 從Unix的終端執行python腳本
- 27. 如何使用命令提示符運行多個腳本
- 28. 如何從python提示執行(不導入)python腳本?
- 29. 傳遞參數到Python腳本在Windows命令提示符
- 30. 執行python腳本