不同但相似的问题:我告诉大家,在他们的主目录“~/.gdbinit”文件中,他们必须通过绝对路径加载一个常见的 python 模块。这只是一行,并不复杂。
你应该注意:有些人会称之为安全威胁,这是一种平衡行为——我必须信任我的团队,他们必须信任我。我是这样想的:我们都在处理尖锐的事情,我们必须了解我们在做什么。每个团队都是独一无二的,请使用您的判断力。
我还必须处理多个版本的 GDB,但需要处理一个通用的单个 .gdbinit 文件。例子; AndroidOLD(GDB)、AndroidNEW(GDB)、LinuxHost(GDB) 和 SomeOther(GDB)
人们整天使用不同的东西在项目之间切换,常见的脚本目录问题。我的主目录中有我自己的脚本
我依赖 GDB-Python 扩展
import os
import gdb
在 Linux 上,我可以通过查看可执行文件的绝对路径来确定 GDB 的确切版本,因此:AndroidOLD(gdb) vrs AndroidNEW(gdb) 可以通过在路径中查找版本号来确定。
exename = os.readlink( '/proc/self/exe' )
我还可以使用这些项目来确定主机类型(cygwin、linux、mac 等)以及有关目标架构的更多详细信息(即:哪个 android cpu 目标?)
print (gdb.HOST_CONFIG)
# gives: x86_64-linux-gnu
# Alternates: MACOS, or CYGWIN32 or CYGWIN64
print (gdb.TARGET_CONFIG)
# Gives: 64bit android, 32bit android, or something else
现在,更多的是原始海报问题:一个包含大量脚本的公共目录
- 我有多个“公共目录”
- 我必须处理不同的架构
- 我的人在项目之间切换
- 并在版本之间切换
一些项目系统有一个项目或模块的公共根目录(即:Android),所有子组件都是该公共目录的子目录。使用 python - 您可以从当前目录开始,然后一次爬上目录树,直到找到一些能告诉您更多信息的神奇文件(例如,一些标识 android 构建的根目录的文件)
现在我知道了所有这些,我可以遍历我需要通过以下方式加载的文件:
import gdb
gdb.execute('source %s' % filename)
问题解决了。