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 )

给定设备虚拟地址,返回对应的系统内存虚拟地址。自 CUDA 4.1 起。

另请参阅

readGenericMemory

writeGenericMemory

参数
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