QNX 中微子中的 THREAD 数据类型是什么?如何使用线程的 THREAD* 值访问线程堆栈的内容,就像使用 gdb 命令工具调试堆栈帧一样?
您可以通过/proc 文件系统在您自己的或(如果您是 root)中检索另一个进程中特定线程的寄存器值。
首先,使用 devctl() DCMD_PROC_CURTHREAD 选择要检索寄存器的线程:
http://www.qnx.com/developers/docs/6.5.0_sp1/index.jsp?topic=%2Fcom.qnx.doc.neutrino_prog%2Fprocess.html&cp=13_7_3_4_7&anchor=DCMD_PROC_CURTHREAD
之后,使用 DCMD_PROC_GETREG 检索寄存器的值,包括堆栈指针。
如果从同一进程的另一个线程执行此操作,则可以按原样使用 SP 的值,因为您位于同一地址空间中。
如果你是从另一个进程执行此操作,那么你需要通过/proc/PID/如/proc/PID/如中所述读取() 地址空间,如中所述:http://www.qnx.com/developers/docs/6.5.0_sp1/index.jsp?topic=%2Fcom.qnx.doc.neutrino_prog%2Fprocess.html&cp=13_7_3_4_1&anchor=Address_space