Home :: International :: Manuals :: Howto :: FAQ :: Man Pages :: Email Login

 
 

 

PTRACE

Section: Linux Programmer's Manual (2)
Updated: 7 November 1999
Index Return to Main Contents
 

̾Á°

ptrace - process trace  

½ñ¼°

#include <sys/ptrace.h>

long int ptrace(enum __ptrace_request request, pid_t pid, void * addr, void * data)  

ÀâÌÀ

ptrace ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¿Æ¥×¥í¥»¥¹(parent process)¤¬Â¾¤Î¥×¥í¥»¥¹¤Î ¼Â¹Ô¤ò´Ñ»¡¤·À©¸æ¤·¤¿¤ê¡¢¤½¤Î¥á¥â¥ê¡¦¥¤¥á¡¼¥¸(core image)¤È¥ì¥¸¥¹¥¿¤ò Ä´¤ÙÊѹ¹¤¹¤ë¼êÃʤòÄ󶡤¹¤ë¡£¤½¤Î¼çÍפʻÈÍÑË¡¤Ï¥Ç¥Ð¥Ã¥¯ÍѤΠ¥Ö¥ì¡¼¥¯¡¦¥Ý¥¤¥ó¥È(break point)¤Î¼ÂÁõ¤ä¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÎÄÉÀפǤ¢¤ë¡£

¥È¥ì¡¼¥¹¤ò³«»Ï¤¹¤ë¤Ë¤Ï¡¢¿Æ¥×¥í¥»¥¹¤Ï fork(2) ¤ò¸Æ¤Ó½Ð¤·¤ÆÀ¸À®¤·¤¿»Ò¥×¥í¥»¥¹¤Ç PTRACE_TRACEME ¤ò¼Â¹Ô¤·¡¢ ³¤±¤Æ(ŵ·¿Åª¤Ë¤Ï) exec(2) ¤ò¹Ô¤¦¡£ Ê̤ÎÊýË¡¤È¤·¤Æ´û¸¤Î¥×¥í¥»¥¹¤ËÂФ·¤Æ PTRACE_ATTACH ¤ò»ÈÍѤ·¤Æ¥È¥ì¡¼¥¹¤ò ³«»Ï¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£

¥È¥ì¡¼¥¹¤ò¼Â¹ÔÃæ¤Ï»Ò¥×¥í¥»¥¹¤Ï¥·¥°¥Ê¥ë¤ò¼õ¤±¼è¤ëÅ٤ˡ¢Î㤨¤½¤ì¤¬ ̵»ë¤¹¤Ù¤­¥·¥°¥Ê¥ë¤Î¾ì¹ç¤Ë¤Ç¤âÄä»ß¤¹¤ë¡£(SIGKILL ¤ÏÎã³°¤Ç¤¢¤ê¡¢ ¤½¤ÎÄ̾ï¤É¤ª¤ê¤Î¸ú²Ì¤ò¤â¤¿¤é¤¹¡£) ¿Æ¥×¥í¥»¥¹¤Ï¼¡¤Î wait(2) ¤ÎºÝ¤ËÄÌÃΤµ¤ì¡¢Ää»ß¤·¤Æ¤¤¤ë´Ö¤Ë»Ò¥×¥í¥»¥¹¤òÄ´¤Ù¤¿¤ê½¤Àµ¤·¤¿¤ê¤Ç¤­¤ë¡£ ¿Æ¥×¥í¥»¥¹¤Ï¤½¤ì¤«¤é»Ò¥×¥í¥»¥¹¤Î¼Â¹Ô¤ò³¤±¤¿¤ê¡¢ÁªÂòŪ¤ËÇÛÁ÷¤µ¤ì¤¿ ¥·¥°¥Ê¥ë¤ò̵»ë¤µ¤»¤¿¤ê(¤Þ¤¿Âå¤ê¤ËÊ̤Υ·¥°¥Ê¥ë¤òÇÛÁ÷¤·¤¿¤ê)¤Ç¤­¤ë¡£

¿Æ¥×¥í¥»¥¹¤¬¥È¥ì¡¼¥¹¤ò½ªÎ»¤¹¤ë¤È¤­¡¢PTRACE_KILL ¤ò»ÈÍѤ·¤Æ»Ò¥×¥í¥»¥¹¤ò ½ªÎ»¤µ¤»¤¿¤ê¡¢PTRACE_DETACH ¤ò»ÈÍѤ·¤ÆÈó¥È¥ì¡¼¥¹¥â¡¼¥É¤Ë¤·¤ÆÄ̾ï¤Î¼Â¹Ô ¤ò³¤±¤µ¤»¤¿¤ê¤Ç¤­¤ë¡£

request ¤ÎÃͤ¬¤³¤Î¥·¥¹¥Æ¥à¡¦¥³¡¼¥ë¤Îưºî¤ò·èÄꤹ¤ë:

PTRACE_TRACEME
¤³¤Î¥×¥í¥»¥¹¤¬¿Æ¥×¥í¥»¥¹¤Ë¤è¤Ã¤Æ¥È¥ì¡¼¥¹¤µ¤ì¤ë¤³¤È¤ò»Ø¼¨¤¹¤ë¡£ ¤³¤Î¥×¥í¥»¥¹¤Ë(SIGKILL ¤ò½ü¤¯)¥·¥°¥Ê¥ë¤¬ÇÛÁ÷¤µ¤ì¤ë¤È¥×¥í¥»¥¹¤Ï Ää»ß¤µ¤»¤é¤ì¡¢¿Æ¥×¥í¥»¥¹¤Ë wait ¤òÄ̤·¤ÆÄÌÃΤµ¤ì¤ë¡£ ¤Þ¤¿¤³¤ì°Ê¸å¡¢¤³¤Î¥×¥í¥»¥¹¤Ë¤è¤Ã¤Æ¹Ô¤ï¤ì¤ë exec ¤Î¸Æ¤Ó½Ð¤·¤Ï SIGTRAP ¤ÎÇÛÁ÷¤¬¹Ô¤ï¤ì¡¢¿·¤·¤¤¥×¥í¥°¥é¥à¤¬¼Â¹Ô¤ò³«»Ï¤¹¤ë Á°¤Ë¿Æ¥×¥í¥»¥¹¤ËÀ©¸æ¤òÆÀ¤ëµ¡²ñ¤òÍ¿¤¨¤ë¡£¿Æ¥×¥í¥»¥¹¤¬¥È¥ì¡¼¥¹¤òͽ´ü¤·¤Æ ¤¤¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢¥×¥í¥»¥¹¤Ï¤³¤Î¥ê¥¯¥¨¥¹¥È¤ò¹Ô¤¦¤Ù¤­¤Ç¤Ï¤Ê¤¤¤À¤í¤¦¡£ (pid, addr, data ¤Ï̵»ë¤µ¤ì¤ë¡£)

¾åµ­¤Î¥ê¥¯¥¨¥¹¥È¤Ï»Ò¥×¥í¥»¥¹¤Ë¤è¤Ã¤Æ¤Î¤ß¹Ô¤ï¤ì¤ë¡£»Ä¤ê¤Î¥ê¥¯¥¨¥¹¥È¤Ï ¿Æ¥×¥í¥»¥¹¤Ë¤è¤Ã¤Æ¹Ô¤ï¤ì¤ë¡£°Ê²¼¤Î¥ê¥¯¥¨¥¹¥È¤Ç pid ¤Ïưºî¤ÎÂÐ¾Ý ¤È¤Ê¤ë»Ò¥×¥í¥»¥¹¤ò»ØÄꤹ¤ë¡£PTRACE_KILL °Ê³°¤Î¥ê¥¯¥¨¥¹¥È¤ò¹Ô¤¦¤¿¤á¤Ë ¤Ï»Ò¥×¥í¥»¥¹¤ÏÄä»ß¤·¤Æ¤¤¤ëɬÍפ¬¤¢¤ë¡£

PTRACE_PEEKTEXT, PTRACE_PEEKDATA
»Ò¥×¥í¥»¥¹¤Î¥á¥â¥ê¤Î addr ¤Î°ÌÃÖ¤«¤é¥ï¡¼¥É¤òÆÉ¤ß¹þ¤à¡£ÆÉ¤ß¹þ¤ó¤À¥ï¡¼¥É¤Ï ptrace ¥³¡¼¥ë¤Î·ë²Ì¤È¤·¤ÆÊÖ¤µ¤ì¤ë¡£Linux ¤Ï¥Æ¥­¥¹¥È(text)¤È¥Ç¡¼¥¿(data)¤Ç ¥¢¥É¥ì¥¹¶õ´Ö¤ÎʬΥ¤ò¹Ô¤Ã¤Æ¤¤¤Ê¤¤¡£¤½¤ì¤ÇÆó¤Ä¤Î¥ê¥¯¥¨¥¹¥È¤Ï¸½ºß¤Î ¤È¤³¤íƱ¤¸°ÕÌ£¤ò»ý¤Ä¡£(data ¤Ï̵»ë¤µ¤ì¤ë¡£)
PTRACE_PEEKUSER
»Ò¥×¥í¥»¥¹¤Î ¥æ¡¼¥¶¡¼(USER) Îΰè¤Î addr ¤Î¥ª¥Õ¥»¥Ã¥È¤«¤é¥ï¡¼¥É¤òÆÉ¤ß¹þ¤à¡£¥æ¡¼¥¶¡¼Îΰè¤Ï¥ì¥¸¥¹¥¿(register)¤ä ¥×¥í¥»¥¹¤Ë´Ø¤¹¤ë¾¤Î¾ðÊó¤òÊÝ»ý¤·¤Æ¤¤¤ë¡£(<linux/user.h> ¤È <sys/user.h> ¤ò»²¾È)¡£¥ï¡¼¥É¤Ï ptrace ¥³¡¼¥ë¤Î·ë²Ì¤È¤·¤ÆÊÖ¤µ¤ì¤ë¡£Åµ·¿Åª¤Ë¥ª¥Õ¥»¥Ã¥È¤Ï¥ï¡¼¥É¶­³¦¤Ë ¤½¤í¤¨¤é¤ì¤Æ¤¤¤ë¡£¤·¤«¤·¤Ê¤¬¤é¤³¤ì¤Ï¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤´¤È¤Ë°Û¤Ã¤Æ¤¤¤ë¡£ (data ¤Ï̵»ë¤µ¤ì¤ë¡£)
PTRACE_POKETEXT, PTRACE_POKEDATA
¿Æ¥×¥í¥»¥¹¤Î¥á¥â¥ê¤Î data ¤Î°ÌÃÖ¤«¤é»Ò¥×¥í¥»¥¹¤Î¥á¥â¥ê¤Î addr ¤Î°ÌÃ֤إ¥É¤ò¥³¥Ô¡¼¤¹¤ë¡£¾åµ­¤ÈƱÍͤ˸½ºß¤Î¤È¤³¤íÆó¤Ä¤Î ¥ê¥¯¥¨¥¹¥È¤ÏƱ¤¸¤Ç¤¢¤ë¡£
PTRACE_POKEUSR
¿Æ¥×¥í¥»¥¹¤Î¥á¥â¥ê¤Î data ¤Î°ÌÃÖ¤«¤é»Ò¥×¥í¥»¥¹¤Î ¥æ¡¼¥¶¡¼ Îΰè¤Î addr ¤Î¥ª¥Õ¥»¥Ã¥È¤Ë¥ï¡¼¥É¤ò¥³¥Ô¡¼¤¹¤ë¡£¾åµ­¤ÈƱÍͤ˥ª¥Õ¥»¥Ã¥È¤Ïŵ·¿Åª¤Ë ¥ï¡¼¥É¶­³¦¤Ë¤½¤í¤¨¤é¤ì¤Æ¤¤¤ë¡£¥«¡¼¥Í¥ë¤Î´°Á´À­¤ò°Ý»ý¤¹¤ë¤¿¤á¤Ë USER Îΰè¤Î¤¢¤ëÉôʬ¤Î½¤Àµ¤Ïµö¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
PTRACE_GETREGS, PTRACE_GETFPREGS
¤½¤ì¤¾¤ì»Ò¥×¥í¥»¥¹¤Î°ìÈ̥쥸¥¹¥¿¤ÈÉâÆ°¾®¿ôÅÀ¥ì¥¸¥¹¥¿¤ò¿Æ¥×¥í¥»¥¹¤Î data ¤Î°ÌÃ֤˥³¥Ô¡¼¤¹¤ë¡£¤³¤Î data ¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë´Ø¤·¤Æ¤Ï <linux/user.h> ¤ò»²¾È¤¹¤ë¤³¤È¡£(addr ¤Ï̵»ë¤µ¤ì¤ë¡£)
PTRACE_SETREGS, PTRACE_SETFPREGS
¤½¤ì¤¾¤ì»Ò¥×¥í¥»¥¹¤Î°ìÈ̥쥸¥¹¥¿¤ÈÉâÆ°¾®¿ôÅÀ¥ì¥¸¥¹¥¿¤Ø¿Æ¥×¥í¥»¥¹¤Î data ¤Î°ÌÃÖ¤«¤é¥³¥Ô¡¼¤¹¤ë¡£PTRACE_POKEUSER ¤ÈƱÍͤ˰ìÉô¤Î°ìÈÌ ¥ì¥¸¥¹¥¿¤Î½¤Àµ¤Ïµö¤µ¤ì¤Æ¤¤¤Ê¤¤¡£(addr ¤Ï̵»ë¤µ¤ì¤ë¡£)
PTRACE_CONT
Ää»ß¤·¤¿»Ò¥×¥í¥»¥¹¤Î¼Â¹Ô¤òºÆ³«¤µ¤»¤ë¡£¤â¤· data ¤¬¥¼¥í¤Ç¤Ê¤¯¡¢ SIGSTOP ¤Ç¤â¤Ê¤±¤ì¤Ð¡¢»Ò¥×¥í¥»¥¹¤ËÇÛÁ÷¤µ¤ì¤ë¥·¥°¥Ê¥ë¤È²ò¼á¤µ¤ì¤ë¡£ ¥¼¥í¤ä SIGSTOP ¤Î¾ì¹ç¤Ï¥·¥°¥Ê¥ë¤ÏÇÛÁ÷¤µ¤ì¤Ê¤¤¡£¤³¤ì¤Ë¤è¤Ã¤Æ¿Æ¥×¥í ¥»¥¹¤Ï»Ò¥×¥í¥»¥¹¤ËÁ÷¤é¤ì¤¿¥·¥°¥Ê¥ë¤ò¼ÂºÝ¤ËÇÛÁ÷¤¹¤ë¤«¤É ¤¦¤«À©¸æ¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ (addr ¤Ï̵»ë¤µ¤ì¤ë¡£)
PTRACE_SYSCALL, PTRACE_SINGLESTEP
PTRACE_CONT ¤ÈƱÍͤËÄä»ß¤·¤¿»Ò¥×¥í¥»¥¹¤òºÆ³«¤¹¤ë¡£¤·¤«¤·¡¢PTRACE_SYSCALL ¤Î¾ì¹ç¤Ï»Ò¥×¥í¥»¥¹¤¬¥·¥¹¥Æ¥à¥³¡¼¥ë¤ËÆþ¤ë»þ¤ÈÈ´¤±½Ð¤·¤¿»þ¤Ë¡¢ PTRACE_SINGLESTEP ¤Î¾ì¹ç¤ÏÌ¿Îá¤ò°ì¤Ä¤À¤±¼Â¹Ô¤·¤¿»þ¤ËÄä»ß¤¹¤ë¤è¤¦¤Ë ÀßÄꤵ¤ì¤ë¡£(»Ò¥×¥í¥»¥¹¤ÏÄ̾ï¤ÈƱ¤¸¤è¤¦¤Ë¥·¥°¥Ê¥ë¤ò¼õ¤±¼è¤Ã¤¿¾ì¹ç¤Ë ¤âÄä»ß¤¹¤ë¡£) ¿Æ¥×¥í¥»¥¹¤«¤é¸«¤ë¤È»Ò¥×¥í¥»¥¹¤Ï SIGTRAP ¤ò¼õ¿®¤·¤Æ Ää»ß¤·¤¿¤è¤¦¤Ë¸«¤¨¤ë¡£¤½¤ì¤ÇÎ㤨¤ÐºÇ½é¤Î PTRACE_SYSCALL ¤ÇÄä»ß¤·¤¿»þ¤Ë °ú¤­¿ô¤òÄ´¤Ù¤Æ¤µ¤é¤Ë PTRACE_SYSCALL ¤ò¼Â¹Ô¤·¡¢2²óÌܤÎÄä»ß¤Ç¥·¥¹¥Æ¥à ¥³¡¼¥ë¤ÎÊÖ¤êÃͤòÄ´¤Ù¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(addr ¤Ï̵»ë¤µ¤ì¤ë¡£)
PTRACE_KILL
»Ò¥×¥í¥»¥¹¤Ë SIGKILL ¤òÁ÷¤ê½ªÎ»¤µ¤»¤ë¡£(addr ¤È data ¤Ï ̵»ë¤µ¤ì¤ë¡£)
PTRACE_ATTACH
pid ¤Ç»ØÄꤵ¤ì¤¿¥×¥í¥»¥¹¤ËÀܳ(attach)¤·¡¢¤½¤ì¤ò¸½ºß¤Î¥×¥í¥»¥¹¤Î »Ò¥×¥í¥»¥¹¤È¤·¤Æ¥È¥ì¡¼¥¹¤Ç¤­¤ë¤è¤¦¤Ë¤¹¤ë¡£»Ò¥×¥í¥»¥¹¤Ï PTRACE_TRACEME ¤·¤¿¤«¤Î¤è¤¦¤Ë¿¶Éñ¤¦¡£¸½ºß¤Î¥×¥í¥»¥¹¤Ï¤½¤Î¤Û¤È¤ó¤É¤ÎÌÜŪ¤Ë¤ª¤¤¤Æ¡¢ ¤½¤Î»Ò¥×¥í¥»¥¹¤Î¼ÂºÝ¤Î¿Æ¤Ë¤Ê¤ë¡£(Î㤨¤Ð»Ò¥×¥í¥»¥¹¤Î¥¤¥Ù¥ó¥È¤Î ¤ÎÄÌÃΤò¼õ¤±¤È¤Ã¤¿¤ê¡¢ ps(1) ¤Ç¿Æ¤È¤·¤ÆÉ½¼¨¤µ¤ì¤¿¤ê¤¹¤ë¡£) ¤·¤«¤·»Ò¥×¥í¥»¥¹¤Ç getppid(2) ¤ò¼Â¹Ô¤·¤¿¾ì¹ç¤Ë¤Ï¸µ¤Î¿Æ¥×¥í¥»¥¹¤Î PID ¤¬ÊÖ¤µ¤ì¤ë¡£ »Ò¥×¥í¥»¥¹¤Ë¤Ï SIGSTOP ¤òÁ÷¤é¤ì¤ë¤¬¡¢¤³¤Î¥³¡¼¥ë¤¬´°Î»¤¹¤ëÁ°¤ËÄä»ß¤¹¤ë ɬÍפϤʤ¤¡£»Ò¥×¥í¥»¥¹¤ÎÄä»ß¤òÂÔ¤Ä¤Ë¤Ï wait ¤ò»ÈÍѤ¹¤ë¤³¤È¡£(addr ¤È data ¤Ï̵»ë¤µ¤ì¤ë¡£)
PTRACE_DETACH
PTRACE_CONT ¤ÈƱÍͤËÄä»ß¤·¤¿»Ò¥×¥í¥»¥¹¤òºÆ³«¤¹¤ë¡£¤·¤«¤·ºÇ½é¤Ë¤½¤Î ¥×¥í¥»¥¹¤ÎʬΥ(detach)¤ò¹Ô¤¤¡¢PTRACE_ATTACH ¤Î¿Æ¤ÎÀڤ괹¤¨¤È PTRACE_TRACEME ¤Î¸ú²Ì¤ò¼è¤ê¾Ã¤¹¡£¤µ¤é¤Ë¡¢°Õ¿Þ¤·¤Ê¤¤¤«¤â¤·¤ì¤Ê¤¤¤¬¡¢ Linux ¤Ç¤Ï¡¢¥È¥ì¡¼¥¹¤µ¤ì¤Æ¤¤¤ë»Ò¥×¥í¥»¥¹¤Ï¤É¤Î¤è¤¦¤ÊÊýË¡¤Ç¥È¥ì¡¼¥¹¤ò ³«»Ï¤µ¤ì¤¿¤È¤·¤Æ¤â¡¢¤³¤ÎÊýË¡¤ÇʬΥ(detach)¤Ç¤­¤ë¡£
 

Ãí°Õ

ptrace ¤Î°ú¤­¿ô¤Î·¿¤Ï¥×¥í¥È¥¿¥¤¥×¤Î¤è¤¦¤Ë·è¤Ã¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º¡¢ GNU libc ¤Ç¤Ï¸½ºß¤Î¤È¤³¤í ptrace ¤ÏºÇ½é¤Î request °ú¤­¿ô¤Î¤ß¸ÇÄê¤Ç²ÄÊѰú¤­¿ô´Ø¿ô¤È¤·¤ÆÀë¸À¤µ¤ì¤Æ¤¤¤ë¡£ ¤³¤ì¤ÏÉÔɬÍפʻĤê¤Î°ú¤­¿ô¤¬¾Êά²Äǽ¤Ê¤³¤È¤ò°ÕÌ£¤·¤Æ¤¤¤ë¡£¤·¤«¤· ¤³¤ì¤Ï gcc(1) ¤ÎÈó¸ø¼°¤Îưºî¤ò»ÈÍѤ·¤Æ¤¤¤ë¡£

init(8) ¤¹¤Ê¤ï¤Á PID 1 ¤Î¥×¥í¥»¥¹¤Ï¥È¥ì¡¼¥¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤¡£

¥á¥â¥ê¤ÎÆâÍÆ¤ä USER Îΰè¤ÎÇÛÃÖ¤Ï OS ¤ä¥¢¥­¡¼¥Æ¥¯¥Á¥ã¤Ç´°Á´¤ËÆÈÆÃ¤Ç¤¢¤ë¡£

¥ï¡¼¥É(word)¤ÎÂ礭¤µ¤Ï OS ¤Î¼ïÊ̤ˤè¤Ã¤Æ·èÄꤵ¤ì¤ë¡£(Î㤨¤Ð 32¥Ó¥Ã¥È¤Î Linux ¤Ç¤Ï 32¥Ó¥Ã¥È¤Ç¤¢¤ë¡£)

¥È¥ì¡¼¥¹¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¥È¥ì¡¼¥¹¤µ¤ì¤ë¥×¥í¥»¥¹¤Îưºî¤Ëº³ºÙ¤Ê°ã¤¤¤¬ µ¯¤³¤ë¤³¤È¤¬¤¢¤ë¡£Î㤨¤Ð¡¢¥×¥í¥»¥¹¤¬ PTRACE_ATTACH ¤Ë¤è¤Ã¤ÆÀܳ¤µ¤ì¤¿ ¾ì¹ç¤Ë¤Ï¡¢¤½¤Î¥×¥í¥»¥¹¤¬Ää»ß¤·¤¿»þ¤Ç¤âËÜÍè¤Î¿Æ¤Ï wait ¤ò»È¤Ã¤ÆÄÌÃΤòÆÀ¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤¤·¡¢¿·¤·¤¤¿Æ¤Ë¤è¤Ã¤Æ¸ú²ÌŪ¤Ë ¤³¤ÎÄÌÃΤò¿¿»÷¤ëÊýË¡¤â¤Ê¤¤¡£

¤³¤Î¥Þ¥Ë¥å¥¢¥ë¤Ï¸½ºß¤Î Linux ¤Ë¤ª¤±¤ë ptrace ¥³¡¼¥ë¤Îưºî¤Ë¤Ä¤¤¤Æµ­½Ò¤·¤Æ¤¤¤ë¡£Â¾¤Î¼ïÎà¤Î Unix ¤Ë¤ª¤¤¤Æ¤Ï ¤½¤Îưºî¤ÏÃø¤·¤¯°Û¤Ã¤Æ¤¤¤ë¡£¤É¤Î¤è¤¦¤Ê¾ì¹ç¤Ë¤ª¤¤¤Æ¤â ptrace ¤Ï¶ËÅÙ¤Ë OS ¤ä¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤Ë°Í¸¤·¤Æ¤¤¤ë¡£

SunOS ¤Î¥Þ¥Ë¥å¥¢¥ë¡¦¥Ú¡¼¥¸¤Ë¤Ï ptrace ¤Ï¡ÖÆÈÆÃ¤ÇÉԲIJò¡×¤Èµ­½Ò¤µ¤ì¤Æ¤¤¤ë¡£Solaris 2 ¤Ç¤Ï proc ¥Ù¡¼¥¹¤Î ¥Ç¥Ð¥Ã¥°¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤È¤·¤Æ ptrace ¤Î¾å°Ì¸ß´¹´Ø¿ô¤¬¼ÂÁõ¤µ¤ì¡¢¤è¤ê¶¯ÎϤÇÅý°ì¤Î¼è¤ì¤¿¤â¤Î¤È¤Ê¤Ã¤Æ¤¤¤ë¡£  

ÊÖ¤êÃÍ

À®¸ù¤·¤¿¾ì¹ç¤Ë¤Ï PTRACE_PEEK* ¥ê¥¯¥¨¥¹¥È¤ÏÍ׵ᤵ¤ì¤¿¥Ç¡¼¥¿¤òÊÖ¤·¡¢ ¤½¤ì°Ê³°¤Î¾ì¹ç¤Ë¤Ï¥¼¥í¤òÊÖ¤¹¡£¥¨¥é¡¼¤Î¾ì¹ç¤Ë¤Ï -1 ¤òÊÖ¤·¡¢ errno(3) ¤¬Å¬ÀÚ¤ËÀßÄꤵ¤ì¤ë¡£PTRACE_PEEK* ¥ê¥¯¥¨¥¹¥È¤ÏÀ®¸ù¤·¤¿¾ì¹ç¤Ë¤â -1 ¤ò ÊÖ¤¹¾ì¹ç¤¬¤¢¤ë¤¿¤á¡¢¥¨¥é¡¼¤¬µ¯¤³¤Ã¤¿¤«¤É¤¦¤«¤òÄ´¤Ù¤ë¤¿¤á¤Ë¤Ï errno ¤ÎÃͤò¥Á¥§¥Ã¥¯¤¹¤ëɬÍפ¬¤¢¤ë¡£  

¥¨¥é¡¼

EPERM
»ØÄꤷ¤¿¥×¥í¥»¥¹¤ò¥È¥ì¡¼¥¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤¡£¤³¤ì¤Ï¿Æ¥×¥í¥»¥¹¤¬ ɬÍפʸ¢¸Â¤ò»ý¤Ã¤Æ¤¤¤Ê¤«¤Ã¤¿¤³¤È¤Ëµ¯°ø¤¹¤ë¡£¥ë¡¼¥È¤Ç¤Ê¤¤¥×¥í¥»¥¹¤Ï ¥·¥°¥Ê¥ë¤òÁ÷¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤¥×¥í¥»¥¹¤ä setuid/setgid ¥×¥í¥°¥é¥à¤ò ¥È¥ì¡¼¥¹¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Ê¤¤¡£ÅöÁ³¤Î¤³¤È¤Ê¤¬¤é´û¤Ë¥È¥ì¡¼¥¹¤µ¤ì¤Æ¤¤¤ë ¥×¥í¥»¥¹¤ä init (PID 1)¤ò¥È¥ì¡¼¥¹¤¹¤ë¤³¤È¤â¤Ç¤­¤Ê¤¤¡£
ESRCH
»ØÄꤷ¤¿¥×¥í¥»¥¹¤¬Â¸ºß¤·¤Ê¤¤¤«¡¢ ¸½ºß¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤¬¥È¥ì¡¼¥¹¤·¤Æ¤¤¤ë»Ò¥×¥í¥»¥¹¤Ç¤Ï¤Ê¤¤¤«¡¢ (Ää»ß¤·¤Æ¤¤¤ë¤³¤È¤¬É¬Íפʥꥯ¥¨¥¹¥È¤Ê¤Î¤Ë)Ää»ß¤·¤Æ¤¤¤Ê¤¤¡£
EIO
request ¤¬ÉÔÀµ¤Ç¤¢¤ë¤«¡¢¿Æ¥×¥í¥»¥¹¤Þ¤¿¤Ï»Ò¥×¥í¥»¥¹¤Î¥á¥â¥êÎΰè¤Î ÉÔÀµ¤Ê¾ì½ê¤òÆÉ¤ß½ñ¤­¤·¤è¤¦¤È¤·¤¿¤«¡¢¥ï¡¼¥É¶­³¦°ãÈ¿¤«¡¢ ¼Â¹ÔºÆ³«¤Î¥ê¥¯¥¨¥¹¥È¤Ë¤ª¤¤¤ÆÉÔÀµ¤Ê¥·¥°¥Ê¥ë¤ò»ØÄꤷ¤¿¡£
EFAULT
¿Æ¥×¥í¥»¥¹¤Þ¤¿¤Ï»Ò¥×¥í¥»¥¹¤Î¥á¥â¥ê¤Î¤¦¤ÁÉÔÀµ¤ÊÎΰè¤ÎÆÉ¤ß½ñ¤­¤ò»î¤ß¤¿¡£ ¤¿¤¤¤Æ¤¤¤Ï¥á¥â¥ê¤¬¥¢¥¯¥»¥¹²Äǽ¤È¤·¤Æ¥Þ¥Ã¥×¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤Ë¤è¤ë¡£ »Äǰ¤Ê¤³¤È¤Ë Linux ¤Ë¤ª¤¤¤Æ¤³¤Î¥¨¥é¡¼¤Ï¾ì¹ç¤Ë¤è¤Ã¤Æ EIO ¤òÊÖ¤·¤¿¤ê RFAULT ¤òÊÖ¤·¤¿¤ê¤¹¤ë¡£
 

½àµò

SVr4, SVID EXT, AT&T, X/OPEN, BSD 4.3  

´ØÏ¢¹àÌÜ

exec(3), wait(2), signal(2), fork(2), gdb(1), strace(1)


 

Index

̾Á°
½ñ¼°
ÀâÌÀ
Ãí°Õ
ÊÖ¤êÃÍ
¥¨¥é¡¼
½àµò
´ØÏ¢¹àÌÜ

 
 
 
 
Google
  Web Linuxinfor   
 

Home :: Copyright :: Privacy :: Credits :: Get a free Linuxinfor Email Account

Document on this page is part of "Linuxinfor Man Pages in HTML Format: man2". See Index Page for more info about Authorship and Copyright.

1999-2008 Linuxinfor.com. No rights reserved.