Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何使用QNX中的线程类型访问每个线程的堆栈?_C_Unix_Operating System_Qnx_Qnx Neutrino - Fatal编程技术网

C 如何使用QNX中的线程类型访问每个线程的堆栈?

C 如何使用QNX中的线程类型访问每个线程的堆栈?,c,unix,operating-system,qnx,qnx-neutrino,C,Unix,Operating System,Qnx,Qnx Neutrino,QNX中微子中的线程数据类型是什么? 如何使用线程*值访问线程堆栈的内容,就像使用gdb命令工具调试堆栈帧一样 您可以在自己的线程中检索特定线程的寄存器值,或者如果您是另一个进程的root用户,则可以通过/proc文件系统检索该线程的寄存器值 首先,使用DCMD_PROC_CURTHREAD devctl选择要检索其寄存器的线程: 然后使用DCMD_PROC_GETREG检索寄存器的值,包括堆栈指针 如果您是从同一进程的另一个线程执行此操作,则可以使用SP的值,因为您位于相同的地址空间中 如果从

QNX中微子中的线程数据类型是什么?
如何使用线程*值访问线程堆栈的内容,就像使用gdb命令工具调试堆栈帧一样

您可以在自己的线程中检索特定线程的寄存器值,或者如果您是另一个进程的root用户,则可以通过/proc文件系统检索该线程的寄存器值

首先,使用DCMD_PROC_CURTHREAD devctl选择要检索其寄存器的线程:

然后使用DCMD_PROC_GETREG检索寄存器的值,包括堆栈指针

如果您是从同一进程的另一个线程执行此操作,则可以使用SP的值,因为您位于相同的地址空间中

如果从另一个进程执行此操作,则需要通过/proc/PID/读取地址空间,如所述:

如果可能的话,您必须记住,在检查其他线程堆栈时,它可能会在您阅读时发生更改。当然,除非你暂停另一个线程。是的!我将要读取其堆栈的线程在读取期间未运行。