기술 정보
home
채널 소개
home

callstack 덤프 수행 불가 상황에서 gdb 통한 callstack 확보 방법

문서 유형
기술 정보
분야
유틸리티
키워드
callstack
gdb
적용 제품 버전
5SP1FS01
5SP1FS02
5SP1FS03
5SP1FS06
6FS01
6FS02
6FS03
6FS04
6FS05
6FS06
6FS07
6FS07PS
7FS01
7FS02
7FS02PS
1 more property

개요

tbsql에서 callstack 덤프를 수행할 수 없는 상황일 때, gdb을 통해 callstack을 확보하는 방법을 안내합니다.
참고
gdb: 유닉스 기반 시스템에서 동작하는 이식성있는 디버거
아래 예시와 같이, TBCLI 로그 또는 pstack을 사용해 시점을 잡기 어려운 상황에서 적용 가능합니다.
$ tbsql sys/tibero tbSQL 7 TmaxTibero Corporation Copyright (c) 2020-. All rights reserved. TBR-2004: DSN (Database Source Name) file format is invalid. at line 12, column 24: ) ^^^^^^ Driver can not be initialized. DSN file is not found or corrupted.
SQL
복사

방법

gdb의 --args 옵션을 사용해, 시점을 잡기 힘든 tibero client 도구의 callstack(backtrace) 정보를 확보할 수 있습니다.
$ gdb --args tbsql sys/tibero ... 중략 ... (gdb) # tbsql 명령이 멈추어 있음 (gdb) run # tbsql 명령 수행 Starting program: /root/tibero7/client/bin/tbsql sys/tibero [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib64/libthread_db.so.1". tbSQL 7 TmaxTibero Corporation Copyright (c) 2020-. All rights reserved. TBR-2004: DSN (Database Source Name) file format is invalid. at line 12, column 24: ) ^^^^^^ Driver can not be initialized. DSN file is not found or corrupted. ... 중지 ... # Ctrl + C를 통해 중지 수행 Program received signal SIGINT, Interrupt. 0x00007ffff3f00d45 in read () from /lib64/libc.so.6 Missing separate debuginfos, use: yum debuginfo-install glibc-2.28-236.el8_9.7.x86_64 libaio-0.3.105-2.x86_64 ncurses-compat-libs-6.1-10.20180224.el8.x86_64 (gdb) bt # backtrace 출력 #0 0x00007ffff3f00d45 in read () from /lib64/libc.so.6 #1 0x00007ffff3e73bf8 in __GI__IO_file_underflow () from /lib64/libc.so.6 #2 0x00007ffff3e74d56 in _IO_default_uflow () from /lib64/libc.so.6 #3 0x00007ffff3e685fa in _IO_getline_info () from /lib64/libc.so.6 #4 0x00007ffff3e675ff in fgets () from /lib64/libc.so.6 #5 0x00000000004116fa in tbsql_stdio_read (buf=buf@entry=0x6c6b40 "bt\n", buf_size=buf_size@entry=2048) at /home/chef/workspace/Build_centos_7-3/tibero7/src/client/tbsql/tbsql_io.c:405 #6 0x00000000004117b4 in tbsql_io_read (buf=0x6c6b40 "bt\n", buf_size=2048, prompt=0x6bf4fc <env_+28> "SQL> ") at /home/chef/workspace/Build_centos_7-3/tibero7/src/client/tbsql/tbsql_io.c:66 #7 0x000000000040fe0a in tbsql_stmt_read_cmd (stmt=stmt@entry=0x7fffffffe1b0, fp=fp@entry=0x0, lno=lno@entry=1, need_prompt=need_prompt@entry=1 '\001') at /home/chef/workspace/Build_centos_7-3/tibero7/src/client/tbsql/tbsql_stmt.c:264 #8 0x0000000000410446 in tbsql_stmt_get_cmd (stmt=stmt@entry=0x7fffffffe1b0, fp=fp@entry=0x0) at /home/chef/workspace/Build_centos_7-3/tibero7/src/client/tbsql/tbsql_stmt.c:303 #9 0x0000000000405bb3 in main (argc=<optimized out>, argv=<optimized out>) at /home/chef/workspace/Build_centos_7-3/tibero7/src/client/tbsql/tbsql.c:70
SQL
복사