3.9. DWARF 实用程序
变量
- CUDBGResult ( *CUDBGAPI_st::disassemble )( uint32_t dev, uint64_t addr, uint32_t* instSize, char* buf, uint32_t sz )
- 反汇编指令,地址为指令地址。
- CUDBGResult ( *CUDBGAPI_st::getElfImageByHandle )( uint32_t devId, uint64_t handle, CUDBGElfImageType type, void* elfImage, uint64_t size )
- 获取给定设备上给定句柄的重定位或非重定位 ELF 映像。
- CUDBGResult ( *CUDBGAPI_st::getHostAddrFromDeviceAddr )( uint32_t dev, uint64_t device_addr, uint64_t* host_addr )
- 给定设备虚拟地址,返回对应的系统内存虚拟地址。
- CUDBGResult ( *CUDBGAPI_st::getPhysicalRegister30 )( uint64_t pc, char* reg, uint32_t* buf, uint32_t sz, uint32_t* numPhysRegs, CUDBGRegClass* regClass )
- 获取在给定 PC 处分配给虚拟寄存器名称 'reg' 的物理寄存器号(多个),如果 'reg' 在该 PC 处处于活动状态。
- CUDBGResult ( *CUDBGAPI_st::getPhysicalRegister40 )( uint32_t dev, uint32_t sm, uint32_t wp, uint64_t pc, char* reg, uint32_t* buf, uint32_t sz, uint32_t* numPhysRegs, CUDBGRegClass* regClass )
- 获取在给定 PC 处分配给虚拟寄存器名称 'reg' 的物理寄存器号(多个),如果 'reg' 在该 PC 处处于活动状态。
- CUDBGResult ( *CUDBGAPI_st::isDeviceCodeAddress )( uintptr_t addr, bool* isDeviceAddress )
- 确定虚拟地址是否位于设备代码中。
- CUDBGResult ( *CUDBGAPI_st::isDeviceCodeAddress55 )( uintptr_t addr, bool* isDeviceAddress )
- 确定虚拟地址是否位于设备代码中。此 API 已强烈弃用。请改用 CUDBGAPI_st::isDeviceCodeAddress。
- CUDBGResult ( *CUDBGAPI_st::lookupDeviceCodeSymbol )( char* symName, bool* symFound, uintptr_t* symAddr )
- 确定符号是否表示设备代码中的函数并返回其虚拟地址。
变量
- CUDBGResult ( *CUDBGAPI_st::disassemble )( uint32_t dev, uint64_t addr, uint32_t* instSize, char* buf, uint32_t sz )
-
反汇编指令,地址为指令地址。自 CUDA 3.0 起。
参数
- dev
- - 设备索引
- addr
- - 指令地址
- instSize
- - 指令大小(32 位或 64 位)
- buf
- - 反汇编指令缓冲区
- sz
- - 反汇编指令缓冲区大小
返回值
CUDBG_SUCCESS、CUDBG_ERROR_INVALID_ARGS、CUDBG_ERROR_INVALID_DEVICE、CUDBG_ERROR_UNKNOWN
- CUDBGResult ( *CUDBGAPI_st::getElfImageByHandle )( uint32_t devId, uint64_t handle, CUDBGElfImageType type, void* elfImage, uint64_t size )
-
获取给定设备上给定句柄的重定位或非重定位 ELF 映像。句柄在 ELF 映像加载通知事件中提供。
自 CUDA 6.0 起。
参数
- devId
- - 设备索引
- handle
- - elf 映像句柄
- type
- - 请求的 ELF 映像类型
- elfImage
- - 指向 ELF 映像的指针
- size
返回值
CUDBG_SUCCESS、CUDBG_ERROR_INVALID_ARGS、CUDBG_ERROR_INVALID_DEVICE、CUDBG_ERROR_UNINITIALIZED
- CUDBGResult ( *CUDBGAPI_st::getHostAddrFromDeviceAddr )( uint32_t dev, uint64_t device_addr, uint64_t* host_addr )
-
参数
- dev
- - 设备索引
- device_addr
- - 设备内存地址
- host_addr
- - 返回的系统内存地址
返回值
CUDBG_SUCCESS、CUDBG_ERROR_INVALID_ARGS、CUDBG_ERROR_INVALID_DEVICE、CUDBG_ERROR_INVALID_CONTEXT、CUDBG_ERROR_INVALID_MEMORY_SEGMENT
- CUDBGResult ( *CUDBGAPI_st::getPhysicalRegister30 )( uint64_t pc, char* reg, uint32_t* buf, uint32_t sz, uint32_t* numPhysRegs, CUDBGRegClass* regClass )
-
获取在给定 PC 处分配给虚拟寄存器名称 'reg' 的物理寄存器号(多个),如果 'reg' 在该 PC 处处于活动状态。自 CUDA 3.0 起。
参数
- pc
- - 程序计数器
- reg
- - 虚拟寄存器索引
- buf
- - 物理寄存器名称
- sz
- - 物理寄存器名称缓冲区大小
- numPhysRegs
- - 返回的物理寄存器名称数量
- regClass
- - 物理寄存器的类别
返回值
CUDBG_SUCCESS、CUDBG_ERROR_INVALID_ARGS、CUDBG_ERROR_UKNOWN_FUNCTION、CUDBG_ERROR_UNKNOWN
- CUDBGResult ( *CUDBGAPI_st::getPhysicalRegister40 )( uint32_t dev, uint32_t sm, uint32_t wp, uint64_t pc, char* reg, uint32_t* buf, uint32_t sz, uint32_t* numPhysRegs, CUDBGRegClass* regClass )
-
获取在给定 PC 处分配给虚拟寄存器名称 'reg' 的物理寄存器号(多个),如果 'reg' 在该 PC 处处于活动状态。获取在给定 PC 处分配给虚拟寄存器名称 'reg' 的物理寄存器号(多个),如果 'reg' 在该 PC 处处于活动状态。如果虚拟寄存器名称映射到多个物理寄存器,则物理寄存器索引最低的物理寄存器将包含虚拟寄存器的最高位,而物理寄存器索引最高的物理寄存器将包含最低位。
自 CUDA 3.1 起。
参数
- dev
- - 设备索引
- sm
- - SM 索引
- wp
- - warp 索引
- pc
- - 程序计数器
- reg
- - 虚拟寄存器索引
- buf
- - 物理寄存器名称
- sz
- - 物理寄存器名称缓冲区大小
- numPhysRegs
- - 返回的物理寄存器名称数量
- regClass
- - 物理寄存器的类别
返回值
CUDBG_SUCCESS、CUDBG_ERROR_INVALID_ARGS、CUDBG_ERROR_UKNOWN_FUNCTION、CUDBG_ERROR_UNKNOWN
- CUDBGResult ( *CUDBGAPI_st::isDeviceCodeAddress )( uintptr_t addr, bool* isDeviceAddress )
-
确定虚拟地址是否位于设备代码中。自 CUDA 3.0 起。
参数
- addr
- - 虚拟地址
- isDeviceAddress
- - 如果地址位于设备代码中,则为 true
返回值
CUDBG_ERROR_INVALID_ARGS、CUDBG_ERROR_UNINITIALIZED、CUDBG_SUCCESS
- CUDBGResult ( *CUDBGAPI_st::isDeviceCodeAddress55 )( uintptr_t addr, bool* isDeviceAddress )
-
确定虚拟地址是否位于设备代码中。此 API 已强烈弃用。请改用 CUDBGAPI_st::isDeviceCodeAddress。自 CUDA 3.0 起。
参数
- addr
- - 虚拟地址
- isDeviceAddress
- - 如果地址位于设备代码中,则为 true
返回值
CUDBG_ERROR_INVALID_ARGS、CUDBG_ERROR_UNINITIALIZED、CUDBG_SUCCESS
- CUDBGResult ( *CUDBGAPI_st::lookupDeviceCodeSymbol )( char* symName, bool* symFound, uintptr_t* symAddr )
-
确定符号是否表示设备代码中的函数并返回其虚拟地址。自 CUDA 3.0 起。
参数
- symName
- - 符号名称
- symFound
- - 如果找到符号,则设置为 true
- symAddr
- - 如果找到,则为符号虚拟地址
返回值
CUDBG_ERROR_INVALID_ARGS、CUDBG_ERROR_UNINITIALIZED、CUDBG_SUCCESS