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

· 13년 전 · 1280
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년 전 조회 1,659
13년 전 조회 2,567
13년 전 조회 1,922
13년 전 조회 5,074
13년 전 조회 2,131
13년 전 조회 1,773
13년 전 조회 1,439
13년 전 조회 1,401
13년 전 조회 2,442
13년 전 조회 2,064
13년 전 조회 3,534
13년 전 조회 1,568
13년 전 조회 1,687
13년 전 조회 1,439
13년 전 조회 1,623
13년 전 조회 1,447
13년 전 조회 1,843
13년 전 조회 1,589
13년 전 조회 1,774
13년 전 조회 3,217
13년 전 조회 2,376
13년 전 조회 2,384
13년 전 조회 2,249
13년 전 조회 2,943
13년 전 조회 1,607
13년 전 조회 1,497
13년 전 조회 2,880
13년 전 조회 1,470
13년 전 조회 1,440
13년 전 조회 1,764
13년 전 조회 1,472
13년 전 조회 1,348
13년 전 조회 1,672
13년 전 조회 1,886
13년 전 조회 1,898
13년 전 조회 1,641
13년 전 조회 2,524
13년 전 조회 1,712
13년 전 조회 1,291
13년 전 조회 1,603
13년 전 조회 2,114
13년 전 조회 1,672
13년 전 조회 1,245
13년 전 조회 1,761
13년 전 조회 2,275
13년 전 조회 1,291
13년 전 조회 1,358
13년 전 조회 1,250
13년 전 조회 1,599
13년 전 조회 1,281
13년 전 조회 1,769
13년 전 조회 1,829
13년 전 조회 2,220
13년 전 조회 1,456
13년 전 조회 1,660
13년 전 조회 5,365
13년 전 조회 1,828
13년 전 조회 1,249
13년 전 조회 1,232
13년 전 조회 1,400
13년 전 조회 1,848
13년 전 조회 1,176
13년 전 조회 2,177
13년 전 조회 2,434
13년 전 조회 1,315
13년 전 조회 1,226
13년 전 조회 1,383
13년 전 조회 2,962
13년 전 조회 1,119
13년 전 조회 1,270
13년 전 조회 1,134
13년 전 조회 1,180
13년 전 조회 1,688
13년 전 조회 1,885
13년 전 조회 1,199
13년 전 조회 1,294
13년 전 조회 1,742
13년 전 조회 1,200
13년 전 조회 1,979
13년 전 조회 2,308
13년 전 조회 4,732
13년 전 조회 1,739
13년 전 조회 1,948
13년 전 조회 1,396
13년 전 조회 1,337
13년 전 조회 1,389
13년 전 조회 1,780
13년 전 조회 2,956
13년 전 조회 1,487
13년 전 조회 2,506
13년 전 조회 2,561
13년 전 조회 2,904
13년 전 조회 1,579
13년 전 조회 1,897
13년 전 조회 1,594
13년 전 조회 1,670
13년 전 조회 1,592
13년 전 조회 1,451
13년 전 조회 1,588
13년 전 조회 1,619