⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 process.c

📁 linux进程跟踪的工具和源代码
💻 C
📖 第 1 页 / 共 4 页
字号:
		else			tprintf("{sys=\"%s\", node=\"%s\", ...}",				uname.sysname, uname.nodename);	}	return 0;}#ifndef SVR4static struct xlat ptrace_cmds[] = {#ifndef FREEBSD		{ PTRACE_TRACEME,	"PTRACE_TRACEME"	},	{ PTRACE_PEEKTEXT,	"PTRACE_PEEKTEXT",	},	{ PTRACE_PEEKDATA,	"PTRACE_PEEKDATA",	},	{ PTRACE_PEEKUSER,	"PTRACE_PEEKUSER",	},	{ PTRACE_POKETEXT,	"PTRACE_POKETEXT",	},	{ PTRACE_POKEDATA,	"PTRACE_POKEDATA",	},	{ PTRACE_POKEUSER,	"PTRACE_POKEUSER",	},	{ PTRACE_CONT,		"PTRACE_CONT"		},	{ PTRACE_KILL,		"PTRACE_KILL"		},	{ PTRACE_SINGLESTEP,	"PTRACE_SINGLESTEP"	},	{ PTRACE_ATTACH,	"PTRACE_ATTACH"		},	{ PTRACE_DETACH,	"PTRACE_DETACH"		},#ifdef SUNOS4	{ PTRACE_GETREGS,	"PTRACE_GETREGS"	},	{ PTRACE_SETREGS,	"PTRACE_SETREGS"	},	{ PTRACE_GETFPREGS,	"PTRACE_GETFPREGS",	},	{ PTRACE_SETFPREGS,	"PTRACE_SETFPREGS",	},	{ PTRACE_READDATA,	"PTRACE_READDATA"	},	{ PTRACE_WRITEDATA,	"PTRACE_WRITEDATA"	},	{ PTRACE_READTEXT,	"PTRACE_READTEXT"	},	{ PTRACE_WRITETEXT,	"PTRACE_WRITETEXT"	},	{ PTRACE_GETFPAREGS,	"PTRACE_GETFPAREGS"	},	{ PTRACE_SETFPAREGS,	"PTRACE_SETFPAREGS"	},#ifdef SPARC	{ PTRACE_GETWINDOW,	"PTRACE_GETWINDOW"	},	{ PTRACE_SETWINDOW,	"PTRACE_SETWINDOW"	},#else /* !SPARC */	{ PTRACE_22,		"PTRACE_PTRACE_22"	},	{ PTRACE_23,		"PTRACE_PTRACE_23"	},#endif /* !SPARC */#endif /* SUNOS4 */	{ PTRACE_SYSCALL,	"PTRACE_SYSCALL"	},#ifdef SUNOS4	{ PTRACE_DUMPCORE,	"PTRACE_DUMPCORE"	},#ifdef I386	{ PTRACE_SETWRBKPT,	"PTRACE_SETWRBKPT"	},	{ PTRACE_SETACBKPT,	"PTRACE_SETACBKPT"	},	{ PTRACE_CLRDR7,	"PTRACE_CLRDR7"		},#else /* !I386 */	{ PTRACE_26,		"PTRACE_26"		},	{ PTRACE_27,		"PTRACE_27"		},	{ PTRACE_28,		"PTRACE_28"		},#endif /* !I386 */	{ PTRACE_GETUCODE,	"PTRACE_GETUCODE"	},#endif /* SUNOS4 */#else /* FREEBSD */	{ PT_TRACE_ME,		"PT_TRACE_ME"		},	{ PT_READ_I,		"PT_READ_I"		},	{ PT_READ_D,		"PT_READ_D"		},	{ PT_WRITE_I,		"PT_WRITE_I"		},	{ PT_WRITE_D,		"PT_WRITE_D"		},	{ PT_READ_U,		"PT_WRITE_U"		},	{ PT_CONTINUE,		"PT_CONTINUE"		},	{ PT_KILL,		"PT_KILL"		},	{ PT_STEP,		"PT_STEP"		},	{ PT_ATTACH,		"PT_ATTACH"		},	{ PT_DETACH,		"PT_DETACH"		},	{ PT_GETREGS,		"PT_GETREGS"		},	{ PT_SETREGS,		"PT_SETREGS"		},	{ PT_GETFPREGS,		"PT_GETFPREGS"		},	{ PT_SETFPREGS,		"PT_SETFPREGS"		},	{ PT_GETDBREGS,		"PT_GETDBREGS"		},	{ PT_SETDBREGS,		"PT_SETDBREGS"		},#endif /* FREEBSD */	{ 0,			NULL			},};#ifndef FREEBSD#ifndef SUNOS4_KERNEL_ARCH_KLUDGEstatic#endif /* !SUNOS4_KERNEL_ARCH_KLUDGE */struct xlat struct_user_offsets[] = {#ifdef LINUX#ifdef S390	{ PT_PSWMASK,		"psw_mask"				},	{ PT_PSWADDR,		"psw_addr"				},	{ PT_GPR0,		"gpr0"					},	{ PT_GPR1,		"gpr1"					},	{ PT_GPR2,		"gpr2"					},	{ PT_GPR3,		"gpr3"					},	{ PT_GPR4,		"gpr4"					},	{ PT_GPR5,		"gpr5"					},	{ PT_GPR6,		"gpr6"					},	{ PT_GPR7,		"gpr7"					},	{ PT_GPR8,		"gpr8"					},	{ PT_GPR9,		"gpr9"					},	{ PT_GPR10,		"gpr10"					},	{ PT_GPR11,		"gpr11"					},	{ PT_GPR12,		"gpr12"					},	{ PT_GPR13,		"gpr13"					},	{ PT_GPR14,		"gpr14"					},	{ PT_GPR15,		"gpr15"					},	{ PT_ACR0,		"acr0"					},	{ PT_ACR1,		"acr1"					},	{ PT_ACR2,		"acr2"					},	{ PT_ACR3,		"acr3"					},	{ PT_ACR4,		"acr4"					},	{ PT_ACR5,		"acr5"					},	{ PT_ACR6,		"acr6"					},	{ PT_ACR7,		"acr7"					},	{ PT_ACR8,		"acr8"					},	{ PT_ACR9,		"acr9"					},	{ PT_ACR10,		"acr10"					},	{ PT_ACR11,		"acr11"					},	{ PT_ACR12,		"acr12"					},	{ PT_ACR13,		"acr13"					},	{ PT_ACR14,		"acr14"					},	{ PT_ACR15,		"acr15"					},	{ PT_ORIGGPR2,		"orig_gpr2"				},	{ PT_FPC,		"fpc"					},	{ PT_FPR0_HI,		"fpr0.hi"				},	{ PT_FPR0_LO,		"fpr0.lo"				},	{ PT_FPR1_HI,		"fpr1.hi"				},	{ PT_FPR1_LO,		"fpr1.lo"				},	{ PT_FPR2_HI,		"fpr2.hi"				},	{ PT_FPR2_LO,		"fpr2.lo"				},	{ PT_FPR3_HI,		"fpr3.hi"				},	{ PT_FPR3_LO,		"fpr3.lo"				},	{ PT_FPR4_HI,		"fpr4.hi"				},	{ PT_FPR4_LO,		"fpr4.lo"				},	{ PT_FPR5_HI,		"fpr5.hi"				},	{ PT_FPR5_LO,		"fpr5.lo"				},	{ PT_FPR6_HI,		"fpr6.hi"				},	{ PT_FPR6_LO,		"fpr6.lo"				},	{ PT_FPR7_HI,		"fpr7.hi"				},	{ PT_FPR7_LO,		"fpr7.lo"				},	{ PT_FPR8_HI,		"fpr8.hi"				},	{ PT_FPR8_LO,		"fpr8.lo"				},	{ PT_FPR9_HI,		"fpr9.hi"				},	{ PT_FPR9_LO,		"fpr9.lo"				},	{ PT_FPR10_HI,		"fpr10.hi"				},	{ PT_FPR10_LO,		"fpr10.lo"				},	{ PT_FPR11_HI,		"fpr11.hi"				},	{ PT_FPR11_LO,		"fpr11.lo"				},	{ PT_FPR12_HI,		"fpr12.hi"				},	{ PT_FPR12_LO,		"fpr12.lo"				},	{ PT_FPR13_HI,		"fpr13.hi"				},	{ PT_FPR13_LO,		"fpr13.lo"				},	{ PT_FPR14_HI,		"fpr14.hi"				},	{ PT_FPR14_LO,		"fpr14.lo"				},	{ PT_FPR15_HI,		"fpr15.hi"				},	{ PT_FPR15_LO,		"fpr15.lo"				},	{ PT_CR_9,		"cr9"					},	{ PT_CR_10,		"cr10"					},	{ PT_CR_11,		"cr11"					},#endif#if defined(SPARC)	/* XXX No support for these offsets yet. */#elif defined(HPPA)	/* XXX No support for these offsets yet. */#elif defined(POWERPC)	{ 4*PT_R0,		"4*PT_R0"				},	{ 4*PT_R1,		"4*PT_R1"				},	{ 4*PT_R2,		"4*PT_R2"				},	{ 4*PT_R3,		"4*PT_R3"				},	{ 4*PT_R4,		"4*PT_R4"				},	{ 4*PT_R5,		"4*PT_R5"				},	{ 4*PT_R6,		"4*PT_R6"				},	{ 4*PT_R7,		"4*PT_R7"				},	{ 4*PT_R8,		"4*PT_R8"				},	{ 4*PT_R9,		"4*PT_R9"				},	{ 4*PT_R10,		"4*PT_R10"				},	{ 4*PT_R11,		"4*PT_R11"				},	{ 4*PT_R12,		"4*PT_R12"				},	{ 4*PT_R13,		"4*PT_R13"				},	{ 4*PT_R14,		"4*PT_R14"				},	{ 4*PT_R15,		"4*PT_R15"				},	{ 4*PT_R16,		"4*PT_R16"				},	{ 4*PT_R17,		"4*PT_R17"				},	{ 4*PT_R18,		"4*PT_R18"				},	{ 4*PT_R19,		"4*PT_R19"				},	{ 4*PT_R20,		"4*PT_R20"				},	{ 4*PT_R21,		"4*PT_R21"				},	{ 4*PT_R22,		"4*PT_R22"				},	{ 4*PT_R23,		"4*PT_R23"				},	{ 4*PT_R24,		"4*PT_R24"				},	{ 4*PT_R25,		"4*PT_R25"				},	{ 4*PT_R26,		"4*PT_R26"				},	{ 4*PT_R27,		"4*PT_R27"				},	{ 4*PT_R28,		"4*PT_R28"				},	{ 4*PT_R29,		"4*PT_R29"				},	{ 4*PT_R30,		"4*PT_R30"				},	{ 4*PT_R31,		"4*PT_R31"				},	{ 4*PT_NIP,		"4*PT_NIP"				},	{ 4*PT_MSR,		"4*PT_MSR"				},	{ 4*PT_ORIG_R3,		"4*PT_ORIG_R3"				},	{ 4*PT_CTR,		"4*PT_CTR"				},	{ 4*PT_LNK,		"4*PT_LNK"				},	{ 4*PT_XER,		"4*PT_XER"				},	{ 4*PT_CCR,		"4*PT_CCR"				},	{ 4*PT_FPR0,		"4*PT_FPR0"				},#else	#ifdef ALPHA	{ 0,			"r0"					},	{ 1,			"r1"					},	{ 2,			"r2"					},	{ 3,			"r3"					},	{ 4,			"r4"					},	{ 5,			"r5"					},	{ 6,			"r6"					},	{ 7,			"r7"					},	{ 8,			"r8"					},	{ 9,			"r9"					},	{ 10,			"r10"					},	{ 11,			"r11"					},	{ 12,			"r12"					},	{ 13,			"r13"					},	{ 14,			"r14"					},	{ 15,			"r15"					},	{ 16,			"r16"					},	{ 17,			"r17"					},	{ 18,			"r18"					},	{ 19,			"r19"					},	{ 20,			"r20"					},	{ 21,			"r21"					},	{ 22,			"r22"					},	{ 23,			"r23"					},	{ 24,			"r24"					},	{ 25,			"r25"					},	{ 26,			"r26"					},	{ 27,			"r27"					},	{ 28,			"r28"					},	{ 29,			"gp"					},	{ 30,			"fp"					},	{ 31,			"zero"					},	{ 32,			"fp0"					},	{ 33,			"fp"					},	{ 34,			"fp2"					},	{ 35,			"fp3"					},	{ 36,			"fp4"					},	{ 37,			"fp5"					},	{ 38,			"fp6"					},	{ 39,			"fp7"					},	{ 40,			"fp8"					},	{ 41,			"fp9"					},	{ 42,			"fp10"					},	{ 43,			"fp11"					},	{ 44,			"fp12"					},	{ 45,			"fp13"					},	{ 46,			"fp14"					},	{ 47,			"fp15"					},	{ 48,			"fp16"					},	{ 49,			"fp17"					},	{ 50,			"fp18"					},	{ 51,			"fp19"					},	{ 52,			"fp20"					},	{ 53,			"fp21"					},	{ 54,			"fp22"					},	{ 55,			"fp23"					},	{ 56,			"fp24"					},	{ 57,			"fp25"					},	{ 58,			"fp26"					},	{ 59,			"fp27"					},	{ 60,			"fp28"					},	{ 61,			"fp29"					},	{ 62,			"fp30"					},	{ 63,			"fp31"					},	{ 64,			"pc"					},#else /* !ALPHA */#ifdef IA64	{ PT_F32, "f32" }, { PT_F33, "f33" }, { PT_F34, "f34" },	{ PT_F35, "f35" }, { PT_F36, "f36" }, { PT_F37, "f37" },	{ PT_F38, "f38" }, { PT_F39, "f39" }, { PT_F40, "f40" },	{ PT_F41, "f41" }, { PT_F42, "f42" }, { PT_F43, "f43" },	{ PT_F44, "f44" }, { PT_F45, "f45" }, { PT_F46, "f46" },	{ PT_F47, "f47" }, { PT_F48, "f48" }, { PT_F49, "f49" },	{ PT_F50, "f50" }, { PT_F51, "f51" }, { PT_F52, "f52" },	{ PT_F53, "f53" }, { PT_F54, "f54" }, { PT_F55, "f55" },	{ PT_F56, "f56" }, { PT_F57, "f57" }, { PT_F58, "f58" },	{ PT_F59, "f59" }, { PT_F60, "f60" }, { PT_F61, "f61" },	{ PT_F62, "f62" }, { PT_F63, "f63" }, { PT_F64, "f64" },	{ PT_F65, "f65" }, { PT_F66, "f66" }, { PT_F67, "f67" },	{ PT_F68, "f68" }, { PT_F69, "f69" }, { PT_F70, "f70" },	{ PT_F71, "f71" }, { PT_F72, "f72" }, { PT_F73, "f73" },	{ PT_F74, "f74" }, { PT_F75, "f75" }, { PT_F76, "f76" },	{ PT_F77, "f77" }, { PT_F78, "f78" }, { PT_F79, "f79" },	{ PT_F80, "f80" }, { PT_F81, "f81" }, { PT_F82, "f82" },	{ PT_F83, "f83" }, { PT_F84, "f84" }, { PT_F85, "f85" },	{ PT_F86, "f86" }, { PT_F87, "f87" }, { PT_F88, "f88" },	{ PT_F89, "f89" }, { PT_F90, "f90" }, { PT_F91, "f91" },	{ PT_F92, "f92" }, { PT_F93, "f93" }, { PT_F94, "f94" },	{ PT_F95, "f95" }, { PT_F96, "f96" }, { PT_F97, "f97" },	{ PT_F98, "f98" }, { PT_F99, "f99" }, { PT_F100, "f100" },	{ PT_F101, "f101" }, { PT_F102, "f102" }, { PT_F103, "f103" },	{ PT_F104, "f104" }, { PT_F105, "f105" }, { PT_F106, "f106" },	{ PT_F107, "f107" }, { PT_F108, "f108" }, { PT_F109, "f109" },	{ PT_F110, "f110" }, { PT_F111, "f111" }, { PT_F112, "f112" },	{ PT_F113, "f113" }, { PT_F114, "f114" }, { PT_F115, "f115" },	{ PT_F116, "f116" }, { PT_F117, "f117" }, { PT_F118, "f118" },	{ PT_F119, "f119" }, { PT_F120, "f120" }, { PT_F121, "f121" },	{ PT_F122, "f122" }, { PT_F123, "f123" }, { PT_F124, "f124" },	{ PT_F125, "f125" }, { PT_F126, "f126" }, { PT_F127, "f127" },	/* switch stack: */	{ PT_F2, "f2" }, { PT_F3, "f3" }, { PT_F4, "f4" },	{ PT_F5, "f5" }, { PT_F10, "f10" }, { PT_F11, "f11" },	{ PT_F12, "f12" }, { PT_F13, "f13" }, { PT_F14, "f14" },	{ PT_F15, "f15" }, { PT_F16, "f16" }, { PT_F17, "f17" },	{ PT_F18, "f18" }, { PT_F19, "f19" }, { PT_F20, "f20" },	{ PT_F21, "f21" }, { PT_F22, "f22" }, { PT_F23, "f23" },	{ PT_F24, "f24" }, { PT_F25, "f25" }, { PT_F26, "f26" },	{ PT_F27, "f27" }, { PT_F28, "f28" }, { PT_F29, "f29" },	{ PT_F30, "f30" }, { PT_F31, "f31" }, { PT_R4, "r4" },	{ PT_R5, "r5" }, { PT_R6, "r6" }, { PT_R7, "r7" },	{ PT_K_B0, "kb0" },	{ PT_B1, "b1" }, { PT_B2, "b2" }, { PT_B3, "b3" },	{ PT_B4, "b4" }, { PT_B5, "b5" },	{ PT_K_AR_PFS, "kar.pfs" },	{ PT_AR_LC, "ar.lc" }, { PT_K_AR_UNAT, "kar.unat" },	{ PT_K_AR_RNAT, "kar.rnat" }, { PT_K_AR_BSPSTORE, "kar.bspstore" },	{ PT_K_PR, "k.pr" },	/* pt_regs */	{ PT_CR_IPSR, "cr.ipsr" }, { PT_CR_IIP, "cr.iip" },	{ PT_CR_IFS, "cr.ifs" }, { PT_AR_UNAT, "ar.unat" },	{ PT_AR_PFS, "ar.pfs" }, { PT_AR_RSC, "ar.rsc" },	{ PT_AR_RNAT, "ar.rnat" }, { PT_AR_BSPSTORE, "ar.bspstore" },	{ PT_PR, "pr" }, { PT_B6, "b6" }, { PT_AR_BSP, "ar.bsp" },	{ PT_R1, "r1" }, { PT_R2, "r2" }, { PT_R3, "r3" },	{ PT_R12, "r12" }, { PT_R13, "r13" }, { PT_R14, "r14" },	{ PT_R15, "r15" }, { PT_R8, "r8" }, { PT_R9, "r9" },	{ PT_R10, "r10" }, { PT_R11, "r11" }, { PT_R16, "r16" },	{ PT_R17, "r17" }, { PT_R18, "r18" }, { PT_R19, "r19" },	{ PT_R20, "r20" }, { PT_R21, "r21" }, { PT_R22, "r22" },	{ PT_R23, "r23" }, { PT_R24, "r24" }, { PT_R25, "r25" },	{ PT_R26, "r26" }, { PT_R27, "r27" }, { PT_R28, "r28" },	{ PT_R29, "r29" }, { PT_R30, "r30" }, { PT_R31, "r31" },	{ PT_AR_CCV, "ar.ccv" }, { PT_AR_FPSR, "ar.fpsr" },	{ PT_B0, "b0" }, { PT_B7, "b7" }, { PT_F6, "f6" },	{ PT_F7, "f7" }, { PT_F8, "f8" }, { PT_F9, "f9" },#else /* !IA64 */#ifdef I386	{ 4*EBX,		"4*EBX"					},	{ 4*ECX,		"4*ECX"					},	{ 4*EDX,		"4*EDX"					},	{ 4*ESI,		"4*ESI"					},	{ 4*EDI,		"4*EDI"					},	{ 4*EBP,		"4*EBP"					},	{ 4*EAX,		"4*EAX"					},	{ 4*DS,			"4*DS"					},	{ 4*ES,			"4*ES"					},	{ 4*FS,			"4*FS"					},	{ 4*GS,			"4*GS"					},	{ 4*ORIG_EAX,		"4*ORIG_EAX"				},	{ 4*EIP,		"4*EIP"					},	{ 4*CS,			"4*CS"					},	{ 4*EFL,		"4*EFL"					},	{ 4*UESP,		"4*UESP"				},	{ 4*SS,			"4*SS"					},#else /* !I386 */#ifdef M68K	{ 4*PT_D1,		"4*PT_D1"				},	{ 4*PT_D2,		"4*PT_D2"				},	{ 4*PT_D3,		"4*PT_D3"				},	{ 4*PT_D4,		"4*PT_D4"				},	{ 4*PT_D5,		"4*PT_D5"				},	{ 4*PT_D6,		"4*PT_D6"				},	{ 4*PT_D7,		"4*PT_D7"				},	{ 4*PT_A0,		"4*PT_A0"				},	{ 4*PT_A1,		"4*PT_A1"				},	{ 4*PT_A2,		"4*PT_A2"				},	{ 4*PT_A3,		"4*PT_A3"				},	{ 4*PT_A4,		"4*PT_A4"				},	{ 4*PT_A5,		"4*PT_A5"				},	{ 4*PT_A6,		"4*PT_A6"				},	{ 4*PT_D0,		"4*PT_D0"				},	{ 4*PT_USP,		"4*PT_USP"				},	{ 4*PT_ORIG_D0,		"4*PT_ORIG_D0"				},	{ 4*PT_SR,		"4*PT_SR"				},	{ 4*PT_PC,		"4*PT_PC"				},#endif /* M68K */#endif /* !I386 */#if !defined(S390) && !defined(MIPS)	{ uoff(u_fpvalid),	"offsetof(struct user, u_fpvalid)"	},#endif#ifdef I386	{ uoff(i387),		"offsetof(struct user, i387)"		},#else /* !I386 */#ifdef M68K	{ uoff(m68kfp),		"offsetof(struct user, m68kfp)"		},#endif /* M68K */#endif /* !I386 */	{ uoff(u_tsize),	"offsetof(struct user, u_tsize)"	},	{ uoff(u_dsize),	"offsetof(struct user, u_dsize)"	},	{ uoff(u_ssize),	"offsetof(struct user, u_ssize)"	},	{ uoff(start_code),	"offsetof(struct user, start_code)"	},	{ uoff(start_stack),	"offsetof(struct user, start_stack)"	},	{ uoff(signal),		"offsetof(struct user, signal)"		},#if !defined(S390) && !defined(MIPS)	{ uoff(reserved),	"offsetof(struct user, reserved)"	},#endif	{ uoff(u_ar0),		"offsetof(struct user, u_ar0)"		},#if !defined(ARM) && !defined(MIPS) && !defined(S390)	{ uoff(u_fpstate),	"offsetof(struct user, u_fpstate)"	},#endif	{ uoff(magic),		"offsetof(struct user, magic)"		},	{ uoff(u_comm),		"offsetof(struct user, u_comm)"		},#ifdef I386	{ uoff(u_debugreg),	"offsetof(struct user, u_debugreg)"	},#endif /* I386 */#endif /* !IA64 */#endif /* !ALPHA */#endif /* !POWERPC/!SPARC */#endif /* LINUX */#ifdef SUNOS4	{ uoff(u_pcb),		"offsetof(struct user, u_pcb)"		},	{ uoff(u_procp),	"offsetof(struct user, u_procp)"	},	{ uoff(u_ar0),		"offsetof(struct user, u_ar0)"		},	{ uoff(u_comm[0]),	"offsetof(struct user, u_comm[0])"	},	{ uoff(u_arg[0]),	"offsetof(struct user, u_arg[0])"	},	{ uoff(u_ap),		"offsetof(struct user, u_ap)"		},	{ uoff(u_qsave),	"offsetof(struct user, u_qsave)"	},	{ uoff(u_rval1),	"offsetof(struct user, u_rval1)"	},	{ uoff(u_rval2),	"offsetof(struct user, u_rval2)"	},	{ uoff(u_error),	"offsetof(struct user, u_error)"	},	{ uoff(u_eosys),	"offsetof(struct user, u_eosys)"	},	{ uoff(u_ssave),	"offsetof(struct user, u_ssave)"	},	{ uoff(u_signal[0]),	"offsetof(struct user, u_signal)"	},	{ uoff(u_sigmask[0]),	"offsetof(struct user, u_sigmask)"	},	{ uoff(u_sigonstack),	"offsetof(struct user, u_sigonstack)"	},	{ uoff(u_sigintr),	"offsetof(struct user, u_sigintr)"	},	{ uoff(u_sigreset),	"offsetof(struct user, u_sigreset)"	},	{ uoff(u_oldmask),	"offsetof(struct user, u_oldmask)"	},	{ uoff(u_code),		"offsetof(struct user, u_code)"		},	{ uoff(u_addr),		"offsetof(struct user, u_addr)"		},	{ uoff(u_sigstack),	"offsetof(struct user, u_sigstack)"	},	{ uoff(u_ofile),	"offsetof(struct user, u_ofile)"	},	{ uoff(u_pofile),	"offsetof(struct user, u_pofile)"	},	{ uoff(u_ofile_arr[0]),	"offsetof(struct user, u_ofile_arr[0])"	},	{ uoff(u_pofile_arr[0]),"offsetof(struct user, u_pofile_arr[0])"},	{ uoff(u_lastfile),	"offsetof(struct user, u_lastfile)"	},	{ uoff(u_cwd),		"offsetof(struct user, u_cwd)"		},	{ uoff(u_cdir),		"offsetof(struct user, u_cdir)"		},	{ uoff(u_rdir),		"offsetof(struct user, u_rdir)"		},	{ uoff(u_cmask),	"offsetof(struct user, u_cmask)"	},	{ uoff(u_ru),		"offsetof(struct user, u_ru)"		},	{ uoff(u_cru),		"offsetof(struct user, u_cru)"		},	{ uoff(u_timer[0]),	"offsetof(struct user, u_timer[0])"	},	{ uoff(u_XXX[0]),	"offsetof(struct user, u_XXX[0])"	},	{ uoff(u_ioch),		"offsetof(struct user, u_ioch)"		},	{ uoff(u_start),	"offsetof(struct user, u_start)"	},	{ uoff(u_acflag),	"offsetof(struct user, u_acflag)"	},	{ uoff(u_prof.pr_base),	"offsetof(struct user, u_prof.pr_base)"	},	{ uoff(u_prof.pr_size),	"offsetof(struct user, u_prof.pr_size)"	},	{ uoff(u_prof.pr_off),	"offsetof(struct user, u_prof.pr_off)"	},	{ uoff(u_prof.pr_scale),"offsetof(struct user, u_prof.pr_scale)"},	{ uoff(u_rlimit[0]),	"offsetof(struct user, u_rlimit)"	},	{ uoff(u_exdata.Ux_A),	"offsetof(struct user, u_exdata.Ux_A)"	},	{ uoff(u_exdata.ux_shell[0]),"offsetof(struct user, u_exdata.ux_shell[0])"},	{ uoff(u_lofault),	"offsetof(struct user, u_lofault)"	},#endif /* SUNOS4 */#ifndef HPPA	{ sizeof(struct user),	"sizeof(struct user)"			},#endif	{ 0,			NULL					},};#endifintsys_ptrace(tcp)struct tcb *tcp;{	char *cmd;	struct xlat *x;	long addr;	cmd = xlookup(ptrace_cmds, tcp->u_arg[0]);	if (!cmd)#ifndef FREEBSD		cmd = "PTRACE_???";#else		cmd = "PT_???";#endif			if (entering(tcp)) {		tprintf("%s, %lu, ", cmd, tcp->u_arg[1]);		addr = tcp->u_arg[2];#ifndef FREEBSD		if (tcp->u_arg[0] == PTRACE_PEEKUSER			|| tcp->u_arg[0] == PTRACE_POKEUSER) {			for (x = struct_user_offsets; x->str; x++) {				if (x->val >= addr)					break;			}			if (!x->str)				tprintf("%#lx, ", addr);			else if (x->val > addr && x != struct_user_offsets) {				x--;				tprintf("%s + %ld, ", x->str, addr - x->val);			}			else				tprintf("%s, ", x->str);		}		else#endif			tprintf("%#lx, ", tcp->u_arg[2]);#ifdef LINUX		switch (tcp->u_arg[0]) {		case PTRACE_PEEKDATA:		case PTRACE_PEEKTEXT:		case PTRACE_PEEKUSER:			break;		case PTRACE_CONT:		case PTRACE_SINGLESTEP:		case PTRACE_SYSCALL:		case PTRACE_DETACH:			printsignal(tcp->u_arg[3]);			break;		default:			tprintf("%#lx", tcp->u_arg[3]);			break;		}	} else {		switch (tcp->u_arg[0]) {		case PTRACE_PEEKDATA:		case PTRACE_PEEKTEXT:		case PTRACE_PEEKUSER:			printnum(tcp, tcp->u_arg[3], "%#x");			break;		}	}#endif /* LINUX */#ifdef SUNOS4		if (tcp->u_arg[0] == PTRACE_WRITEDATA ||			tcp->u_arg[0] == PTRACE_WRITETEXT) {			tprintf("%lu, ", tcp->u_arg[3]);			printstr(tcp, tcp->u_arg[4], tcp->u_arg[3]);		} else if (tcp->u_arg[0] != PTRACE_READDATA &&				tcp->u_arg[0] != PTRACE_READTEXT) {			tprintf("%#lx", tcp->u_arg[3]);		}	} else {		if (tcp->u_arg[0] == PTRACE_READDATA ||			tcp->u_arg[0] == PTRACE_READTEXT) {			tprintf("%lu, ", tcp->u_arg[3]);			printstr(tcp, tcp->u_arg[4], tcp->u_arg[3]);		}	}#endif /* SUNOS4 */#ifdef FREEBSD		tprintf("%lu", tcp->u_arg[3]);	}#endif /* FREEBSD */	return 0;}#endif /* !SVR4 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -