使用msDebug工具调试算子时,可在算子的运行程序上设置行断点,即在算子代码文件的特定行号上设置断点。
(msdebug) b matmul_leakyrelu_kernel.cpp:114 Breakpoint 1: where = device_debugdata`_ZN17MatmulLeakyKernelIDhDhffE7CopyOutEj_mix_aiv + 240 at matmul_leakyrelu_kernel.cpp:114:14, address = 0x000000000000ff88
字段 |
释义 |
---|---|
device_debugdata |
设备侧.o文件名。 |
matmul_leakyrelu_kernel.cpp |
断点所在的kernel函数名。 |
CopyOut |
当前函数。 |
240 |
本次断点地址相对CopyOut函数的地址偏移量,即当前断点地址(0xff88)相对CopyOut函数所在地址的偏移量是240。 |
address = 0x000000000000ff88 |
断点的地址,即逻辑相对地址。 |
(msdebug) b /home/xx/op_host/matmul_leakyrelu_kernel.cpp:24 Breakpoint 1: no locations (pending on future shared by library load). WARNING: Unable to resolve breakpoint to any actual locations. (msdebug)
在算子运行后,会自动找到实际位置,并自动设置断点。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | (msdebug) run Process 165366 launched: '${INSTALL_DIR}/projects/normal_sample/mix/matmul_leakyrelu.fatbin' (aarch64) [Launch of Kernel matmul_leakyrelu_custom on Device 1] Process 165366 stopped [Switching to focus on Kernel matmul_leakyrelu_custom, CoreId 14, Type aiv] * thread #1, name = 'matmul_leakyrel', stop reason = breakpoint 1.1 frame #0: 0x000000000000ff88 device_debugdata`_ZN17MatmulLeakyKernelIDhDhffE7CopyOutEj_mix_aiv(this=0x000000000019fb60, count=0) at matmul_leakyrelu_kernel.cpp:114:14 111 (uint16_t)(tiling.baseN * sizeof(cType) / DEFAULT_C0_SIZE), 112 0, 113 (uint16_t)((tiling.N - tiling.baseN) * sizeof(cType) / DEFAULT_C0_SIZE)}; -> 114 DataCopy(cGlobal[startOffset], reluOutLocal, copyParam); 115 reluOutQueue_.FreeTensor(reluOutLocal); 116 } 117 (msdebug) |
“0x000000000000ff88”代表该断点所在的pc地址。
1 2 3 4 5 6 7 | (msdebug) b matmul_leakyrelu_kernel.cpp:55 Breakpoint 1: no locations (pending on future shared library load). WARNING: Unable to resolve breakpoint to any actual locations. (msdebug) run ... 1 location added to breakpoint 1 ... |
输入以下命令,将会显示所有已设置的断点位置以及序号。
(msdebug) breakpoint list Current breakpoints: 1: file = 'add_custom.cpp', line = 85, exact_match = 0, locations = 1, resolved = 1, hit count = 1 1.1: where = device_debugdata`::add_custom(uint8_t *__restrict, uint8_t *__restrict, uint8_t *__restrict) + 14348 [inlined] KernelAdd::CopyOut(int) + 1700 at add_custom.cpp:85:9, address = 0x000000000000380c, resolved, hit count = 1
(msdebug) breakpoint delete 1 1 breakpoints deleted; 0 breakpoint locations disabled.
1 2 3 4 5 6 7 8 | (msdebug) c Process 165366 resuming 4096.00 4096.00 4096.00 4096.00 4096.00 4096.00 4096.00 4096.00 4096.00 4096.00 4096.00 4096.00 4096.00 4096.00 4096.00 4096.00 4096.00 4096.00 4096.00 4096.00 4096.00 4096.00 4096.00 4096.00 4096.00 4096.00 4096.00 4096.00 4096.00 4096.00 4096.00 4096.00 Process 165366 exited with status = 0 (0x00000000) (msdebug) |