ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù. strace
¸®´ª½º»ó¿¡¼ ÀÛµ¿ÇÏ´Â C ÄÚµåµéÀº ¸ðµÎ ½Ã½ºÅÛÄÝÀ» ÁÖ¾îÁø ÀÓ¹«¸¦ ¼öÇàÇÑ´Ù. ±×·¯¹Ç·Î ÇÁ·Î±×·¥ÀÇ ½Ã½ºÅÛÄÝÀÌ È£ÃâµÇ´Â °ÍÀ» ÃßÀûÇÒ ¼ö ÀÖ´Ù¸é, ÇÁ·Î±×·¥À» µð¹ö±ëÇϰųª Á¦´ë·Î ÀÛµ¿µÇ´ÂÁö¿¡ ´ëÇÑ Áß¿äÇÑ Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù. strace¶õ ¹«¾ùÀΰ¡ ?
strace´Â ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÉµ¿¾È È£ÃâÇÏ´Â ½Ã½ºÅÛÄÝÀ» ÃßÀûÇÒ ¼ö ÀÖ´Â Åø ÀÌ´Ù. ¿©±â¿¡ ´õºÒ¾î ÇÁ·Î¼¼½º°¡ ¹ÞÀº signal¿¡ ´ëÇÑ Á¤º¸µµ ¾òÀ» ¼ö ÀÖ´Ù. strace¸¦ ÀÌ¿ëÇÏ´Â °¡Àå °£´ÜÇÑ °æ¿ì´Â strace ´ÙÀ½¿¡ ½ÇÇà½Ãų ÇÁ·Î±×·¥À» ¸í½ÃÇÏ´Â °ÍÀ¸·Î, ±×·¯¸é ÇÁ·Î±×·¥ÀÌ Á¾·áµÉ¶§±îÁöÀÇ ½Ã½ºÅÛÄÝ È¤Àº ½Ã±×³Î Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖ°Ô µÈ´Ù.
straceÀÇ »ç¿ë¹æ¹ýÀº ´ÙÀ½°ú °°´Ù. $ strace
usage: strace [-dffhiqrtttTvVxx] [-a column] [-e expr] ... [-o file]
[-p pid] ... [-s strsize] [-u username] [-E var=val] ...
[command [arg ...]]
or: strace -c [-e expr] ... [-O overhead] [-S sortby] [-E var=val] ...
[command [arg ...]]
½Ã½ºÅÛÄÝ ÃßÀûÇϱâ
strace¸¦ Å×½ºÆ®Çϱâ À§Çؼ °£´ÜÇÑ ¼ÀÇÃÇÁ·Î±×·¥À» ¸¸µé¾îº¸µµ·Ï ÇÏÀÚ. ÇÁ·Î±×·¥ÀÇ À̸§Àº test.c ·Î ÇϰڴÙ. #include <stdio.h> int main(int argc, char **argv) { return 0; }
ÀÌÁ¦ ÇÁ·Î±×·¥À» ÄÄÆÄÇÑÈÄ, strace¸¦ ÀÌ¿ëÇØ¼ ÇÁ·Î±×·¥À» ½ÇÇà½ÃŲ´Ù. $ strace ./mytest2
execve("./mytest2", ["./mytest2"], [/* 47 vars */]) = 0
brk(0) = 0x804a000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f9c000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260a\1"..., 512) = 512
....
....
fstat64(3, {st_mode=S_IFREG|0644, st_size=1339816, ...}) = 0
mmap2(NULL, 1349136, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e3c000
mmap2(0xb7f83000, 9744, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7f83000
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7e3b000
mprotect(0xb7f80000, 4096, PROT_READ) = 0
munmap(0xb7f86000, 89519) = 0
exit_group(0) = ?
Process 22425 detached
strace¸¦ ½ÇÇà½ÃŰ¸é °¡Àå ¸ÕÀú, ÀÎÀÚ·Î ÁÖ¾îÁø ÇÁ·Î±×·¥À» execv ¸¦ ÀÌ¿ëÇØ¼ ½ÇÇà½ÃŲ´Ù. ¿©±â¿¡¼, ÀÎÀÚ´Â ./mytest2¸¦ Áá°í, 47°³ÀÇ È¯°æº¯¼ö¸¦ ³Ñ°åÀ½À» È®ÀÎÇÒ ¼ö ÀÖ´Ù. ÀÌ È¯°æº¯¼ö´Â strace¸¦ ½ÇÇà½ÃŲ, shell¿¡¼ º¹»çµÈ °ªµéÀÌ´Ù. execve("./mytest2", ["./mytest2"], [/* 47 vars */]) = 0
ÀÌÁ¦ brk(0), close(2), open(2), read(2)¿Í °°Àº ½Ã½ºÅÛÇÔ¼öµéÀ» È£ÃâÇÏ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù. ÃÖÁ¾ÀûÀ¸·Î exit_group ¸¦ È£ÃâÇØ¼ ÇÁ·Î¼¼½º¸¦ Á¾·á½Ã۰í, ½©·Î detached µÈ´Ù.½Ã±×³Î ÃßÀû¹× º¸°í¼¸¸µé±â
strace¸¦ ÀÌ¿ëÇÏ¸é ½Ã±×³ÎÀ» ÃßÀûÇϰí, ÀÌ¿¡ ´ëÇÑ º¸°í¼¸¦ ¸¸µé ¼öµµ ÀÖ´Ù. ´ÙÀ½°ú °°Àº CÄڵ带 ÁغñÇÏÀÚ. #include <stdio.h> int main() { int i; for(i=0;i>=0;i++) { printf("infinity\n"); } return 0; }
´ÙÀ½°ú °°ÀÌ strace¸¦ »ç¿ëÇØº¸ÀÚ. $ strace -o trace.txt ./mytest3ÀÌÁ¦ Àû´çÇÑ ½Ã±â¿¡ ctrl+c ¸¦ ´·¯½º SIGINT signalÀ» ¹ß»ý½ÃŲ´Ù. strace¸¦ ÀÌ¿ëÇÑ ¸ðµç °á°ú´Â trace.txt¿¡ ÀúÀåµÇ¾î ÀÖÀ¸´Ï È®ÀÎÇØ º¸µµ·Ï ÇÏÀÚ. ... ... write(1, "infinity\n", 9) = 9 write(1, "infinity\n", 9) = 9 write(1, "infinity\n", 9) = 9 write(1, "infinity\n", 9) = 9 write(1, "infinity\n", 9) = 9 write(1, "infinity\n", 9) = 9 --- SIGINT (Interrupt) @ 0 (0) --- +++ killed by SIGINT +++SIGINT ½Ã±×³ÎÀ» ¹Þ°í, ÇÁ·Î¼¼½º°¡ Á¾·áµÇ¾úÀ½À» ¾Ë ¼ö ÀÖ´Ù. ½Ã½ºÅÛÄÝ Åë°è
¶ÇÇÑ -c ¿É¼ÇÀ» ÀÌ¿ëÇØ¼ ½Ã½ºÅÛÄÝ¿¡ ´ëÇÑ Åë°è¸¦ ³¾ ¼öµµ ÀÖ´Ù. $ strace -o trace.txt -c ./mytest3 $ cat trace.txt % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 100.00 0.000472 0 35067 1 write 0.00 0.000000 0 1 read 0.00 0.000000 0 18 16 open 0.00 0.000000 0 2 close 0.00 0.000000 0 1 execve 0.00 0.000000 0 3 3 access 0.00 0.000000 0 1 brk 0.00 0.000000 0 1 munmap 0.00 0.000000 0 1 mprotect 0.00 0.000000 0 7 mmap2 0.00 0.000000 0 16 15 stat64 0.00 0.000000 0 3 fstat64 0.00 0.000000 0 1 set_thread_area ------ ----------- ----------- --------- --------- ---------------- 100.00 0.000472 35122 35 total |
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|