프로그램 정지 상태 조사(strace 이용)

· 13년 전 · 1705
test os: centos5

strace 패키지ㅣ 없다면 설치합니다.
  yum -y install strace



#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>

int main ( int argc, char *argv[])
{
        getpid();

        if(argc<2)
        {
                printf("hang (user|system)");
                return 1;
        }
        if (!strcmp(argv[1],"user"))
        {
                while(1); // LOOP
        }
        else if (!strcmp(argv[1],"system"))
        {
                sleep(5);
    printf("system complete~!");
        }
        return 0;
}


g++ -o hang hang.c

root@localhost c_code # strace ./hang system
execve("./hang", ["./hang", "system"], [/* 21 vars */]) = 0
brk(0)                                  = 0x8ca5000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=29863, ...}) = 0
mmap2(NULL, 29863, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f76000
close(3)                                = 0
open("/usr/lib/libstdc++.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\0P|z\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=936908, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f75000
mmap2(0x768000, 961720, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x768000
mmap2(0x848000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xdf) = 0x848000
mmap2(0x84d000, 23736, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x84d000
close(3)                                = 0
open("/lib/libm.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\20\324/\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=208352, ...}) = 0
mmap2(0x2fa000, 155760, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2fa000
mmap2(0x31f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x24) = 0x31f000
close(3)                                = 0
open("/lib/libgcc_s.so.1", 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`f:\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=46476, ...}) = 0
mmap2(0x3a5000, 48036, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3a5000
mmap2(0x3b0000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa) = 0x3b0000
close(3)                                = 0
open("/lib/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\340\277B\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1611564, ...}) = 0
mmap2(0x416000, 1332676, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x416000
mprotect(0x555000, 4096, PROT_NONE)     = 0
mmap2(0x556000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13f) = 0x556000
mmap2(0x559000, 9668, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x559000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f74000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7f74ad0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect(0x556000, 8192, PROT_READ)     = 0
mprotect(0x31f000, 4096, PROT_READ)     = 0
mprotect(0x848000, 16384, PROT_READ)    = 0
mprotect(0x2d6000, 4096, PROT_READ)     = 0
munmap(0xb7f76000, 29863)               = 0
getpid()                                = 2582
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
nanosleep({5, 0}, {5, 0})               = 0
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f7d000
write(1, "system complete~!", 17system complete~!)       = 17
exit_group(0)                           = ?

root@localhost c_code # strace ./hang user
execve("./hang", ["./hang", "user"], [/* 21 vars */]) = 0
brk(0)                                  = 0x963c000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=29863, ...}) = 0
mmap2(NULL, 29863, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f34000
close(3)                                = 0
open("/usr/lib/libstdc++.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\0P|z\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=936908, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f33000
mmap2(0x768000, 961720, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x768000
mmap2(0x848000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xdf) = 0x848000
mmap2(0x84d000, 23736, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x84d000
close(3)                                = 0
open("/lib/libm.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\20\324/\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=208352, ...}) = 0
mmap2(0x2fa000, 155760, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2fa000
mmap2(0x31f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x24) = 0x31f000
close(3)                                = 0
open("/lib/libgcc_s.so.1", 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`f:\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=46476, ...}) = 0
mmap2(0x3a5000, 48036, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3a5000
mmap2(0x3b0000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa) = 0x3b0000
close(3)                                = 0
open("/lib/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\340\277B\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1611564, ...}) = 0
mmap2(0x416000, 1332676, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x416000
mprotect(0x555000, 4096, PROT_NONE)     = 0
mmap2(0x556000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13f) = 0x556000
mmap2(0x559000, 9668, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x559000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f32000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7f32ad0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect(0x556000, 8192, PROT_READ)     = 0
mprotect(0x31f000, 4096, PROT_READ)     = 0
mprotect(0x848000, 16384, PROT_READ)    = 0
mprotect(0x2d6000, 4096, PROT_READ)     = 0
munmap(0xb7f34000, 29863)               = 0
getpid()                                = 2584



어떤 실행 프로그램이 있을때 , 어느 부분에서 행이 걸렸는지 추적이 가능하네요.
|
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

+
제목 글쓴이 날짜 조회
13년 전 조회 2,031
13년 전 조회 2,985
13년 전 조회 2,297
13년 전 조회 5,438
13년 전 조회 2,518
13년 전 조회 2,162
13년 전 조회 1,821
13년 전 조회 1,793
13년 전 조회 2,787
13년 전 조회 2,417
13년 전 조회 3,936
13년 전 조회 1,896
13년 전 조회 2,101
13년 전 조회 1,774
13년 전 조회 1,968
13년 전 조회 1,850
13년 전 조회 2,252
13년 전 조회 1,992
13년 전 조회 2,147
13년 전 조회 3,601
13년 전 조회 2,774
13년 전 조회 2,802
13년 전 조회 2,665
13년 전 조회 3,340
13년 전 조회 2,015
13년 전 조회 1,895
13년 전 조회 3,261
13년 전 조회 1,843
13년 전 조회 1,826
13년 전 조회 2,146
13년 전 조회 1,877
13년 전 조회 1,754
13년 전 조회 2,034
13년 전 조회 2,240
13년 전 조회 2,246
13년 전 조회 2,017
13년 전 조회 2,812
13년 전 조회 2,078
13년 전 조회 1,648
13년 전 조회 2,030
13년 전 조회 2,445
13년 전 조회 2,069
13년 전 조회 1,591
13년 전 조회 2,139
13년 전 조회 2,583
13년 전 조회 1,613
13년 전 조회 1,782
13년 전 조회 1,655
13년 전 조회 2,010
13년 전 조회 1,706
13년 전 조회 2,058
13년 전 조회 2,210
13년 전 조회 2,518
13년 전 조회 1,826
13년 전 조회 2,088
13년 전 조회 5,743
13년 전 조회 2,181
13년 전 조회 1,679
13년 전 조회 1,588
13년 전 조회 1,753
13년 전 조회 2,212
13년 전 조회 1,526
13년 전 조회 2,574
13년 전 조회 2,852
13년 전 조회 1,698
13년 전 조회 1,657
13년 전 조회 1,778
13년 전 조회 3,370
13년 전 조회 1,497
13년 전 조회 1,631
13년 전 조회 1,463
13년 전 조회 1,569
13년 전 조회 2,089
13년 전 조회 2,277
13년 전 조회 1,601
13년 전 조회 1,713
13년 전 조회 2,145
13년 전 조회 1,612
13년 전 조회 2,354
13년 전 조회 2,699
13년 전 조회 5,108
13년 전 조회 2,112
13년 전 조회 2,349
13년 전 조회 1,795
13년 전 조회 1,749
13년 전 조회 1,787
13년 전 조회 2,174
13년 전 조회 3,375
13년 전 조회 1,854
13년 전 조회 2,881
13년 전 조회 2,924
13년 전 조회 3,249
13년 전 조회 1,939
13년 전 조회 2,255
13년 전 조회 1,954
13년 전 조회 2,065
13년 전 조회 1,959
13년 전 조회 1,837
13년 전 조회 1,950
13년 전 조회 2,022