如何调试Triton Python及Triton-JIT编译器Passes?含编译调试配置诉求
构建带调试符号的Triton Python并调试的实操步骤
一、构建带调试符号的Triton Python(指定输出目录)
1. 克隆Triton仓库
git clone --recursive https://github.com/openai/triton.git cd triton
2. 配置CMake构建参数
创建build目录并执行CMake配置,确保开启调试符号、指定输出目录,同时让依赖的LLVM也带调试符号:
mkdir build && cd build cmake .. \ -DCMAKE_BUILD_TYPE=Debug \ -DCMAKE_INSTALL_PREFIX=/your/target/output/directory \ -DTRITON_BUILD_LLVM_FROM_SOURCE=ON \ -DLLVM_BUILD_TYPE=Debug \ -DPython_EXECUTABLE=$(which python)
参数说明:
CMAKE_BUILD_TYPE=Debug:为Triton所有CPP代码生成完整调试符号CMAKE_INSTALL_PREFIX:指定最终安装输出的目录TRITON_BUILD_LLVM_FROM_SOURCE=ON:强制Triton从源码构建LLVM(而非使用系统预编译版本)LLVM_BUILD_TYPE=Debug:为构建的LLVM生成调试符号Python_EXECUTABLE:指定关联的Python解释器路径
3. 编译并安装
# 多核编译加快速度 make -j$(nproc) # 安装到指定目录 make install
安装完成后,指定目录下的Triton Python包即可用于调试。
二、调试Python脚本及底层CPP代码
1. 调试Python脚本
直接使用Python自带的pdb调试器,在脚本开头添加:
import pdb; pdb.set_trace()
运行脚本后即可进入Python调试环境,执行单步、查看变量等操作。
2. 用GDB调试被调用的CPP函数/对象
方式1:用GDB启动Python脚本
gdb --args python /path/to/your/triton_script.py
进入GDB后,设置CPP函数断点(以Triton的IR指令构造函数为例):
# 设置断点 b triton::ir::Instruction::Instruction # 启动脚本 run
当Python代码触发该CPP函数调用时,GDB会自动暂停,此时可使用bt查看调用栈、print查看变量、n单步执行等GDB命令调试。
方式2:附加到运行中的Python进程
如果脚本已经在运行,先获取进程ID:
ps aux | grep python
然后用GDB附加到进程:
gdb -p <your_python_pid>
附加成功后同样可以设置断点调试底层CPP代码。
关键注意事项
- 若断点无法命中,需确认符号文件路径是否正确,可手动指定:
symbol-file /your/target/output/directory/lib/libtriton.so
- 调试LLVM底层函数时,直接设置LLVM函数名断点即可(如
b llvm::Instruction::Instruction),因为LLVM已带调试符号构建。
内容的提问来源于stack exchange,提问作者Shore
相关产品推荐
相关产品推荐

