作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
sa_sigaction 的第三个参数是一个指向机器相关的指针struct ucontext
, 我想知道我可以从 struct ucontext
中转储什么.
void (*sa_sigaction)(int signum, siginfo_t *info, void *ucontext)
struct ucontext {
unsigned long uc_flags;
struct ucontext *uc_link;
stack_t uc_stack;
struct sigcontext uc_mcontext;
sigset_t uc_sigmask; /* mask last for extensibility */
};
特别是通过 uc_mcontext(如果你能告诉我在哪里可以更多地了解其他数据成员,那就太好了),因为人们通常使用 uc_mcontext
像这样转储主机寄存器,
ucontext->uc_mcontext.gregs[REG_EIP]
因为 uc_mcontext
类型是 struct sigcontext
,我看struct sigcontext
在arch/x86/include/asm/sigcontext.h
.
struct sigcontext {
unsigned short gs, __gsh;
unsigned short fs, __fsh;
unsigned short es, __esh;
unsigned short ds, __dsh;
... snip ...
};
它是正确的吗,因为我没有看到 gregs
在struct sigcontext
?欢迎任何建议。
最佳答案
您正在查看 sigcontext 的 Linux 内核定义。您应该查看 struct ucontext 的 C 库 header 。它在/usr/include/sys/ucontext.h 文件中定义
请注意,它是特定于体系结构的 - 例如例如,x86 和 PPC 的字段完全不同!
关于linux - uc_mcontext 定义在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12349169/
sa_sigaction 的第三个参数是一个指向机器相关的指针struct ucontext , 我想知道我可以从 struct ucontext 中转储什么. void (*sa_sigaction
我是一名优秀的程序员,十分优秀!