보통 프로세스가 죽고나서 dump된 core 파일을 보다보니

그때마다 사용하는 명령어를 매번 검색해서 찾기가 불편하여

이곳에 모아서 보려함.



* GDB 명령어

2017.12.29


심볼 테이블에 대해 확인하기 위한 명령어 예시

구조체 안의 정보를 찾아서 확인한다고 봐도 될 것 같다.




(gdb) bt
(gdb) frame 9
#9  0x00002b459abc0e5f in test_GenCancelTrct (pStParser=0x7bb3590, pStTrct=0x2aab1a951e50) at test_Utility.c:834
834 test_Utility.c: 그런 파일이나 디렉토리가 없음.
    in test_Utility.c

(gdb) whatis pStTrct
type = stTrct_t *

(gdb) ptype pStTrct
 type = struct _stTrct_t { ... test_common_msg_t *pStRequest; ... } *

(gdb) ptype pStTrct->pStRequest type = struct { ... test_parsed_msg_t *test_parsed_msg; ... } *

(gdb) ptype pStTrct->pStRequest->test_parsed_msg type = struct { ... test_header_index_t test_header_index[100]; ... } *

(gdb) ptype pStTrct->pStRequest->test_parsed_msg->test_header_index type = struct { ... int test_added_current_sub_index; ... }

(gdb) ptype pStTrct->pStRequest->test_parsed_msg->test_header_index[84].test_current_sub_index type = int

(gdb) p pStTrct->pStRequest->test_parsed_msg->test_header_index[84].test_current_sub_index $1 = 10923


위에서 test_header_index의 배열이 최대 114개까지 사용할 수 있는데

이를 일일이 실행하기 너무 어려움, 개수를 세지도 못하겠음

이렇게 하면 i의 index가 하나씩 증가하면서 위에 보다는 조금 편해짐

하지만 114번 일일이 반복 해야하므로 불편하기는 마찬가지


(gdb) set $i=0 
(gdb) p pTrct->pStRequest->test_parsed_msg.test_header_index[$i++].test_curreut_sub_index


while문을 사용하니 완전 편리하다.

인덱스 정보까지 출력해주니 보기에도 좋다.



(gdb) set $i=0
(gdb) while($i < 115)
>printf "[%d] %d\n", $i, pTrct->pStRequest->test_parsed_msg.test_header_index[$i].test_current_sub_index
>set $i=$i+1
>end




* 참고한 페이지

https://ftp.gnu.org/old-gnu/Manuals/gdb/html_node/gdb_191.html

https://sourceware.org/gdb/onlinedocs/gdb/Symbols.html



2016.11.17


(gdb) info threads

(gdb) bt full

(gdb) info args

(gdb) info locals

(gdb) info variables

(gdb) thread apply all bt           <-- 프로세스 종료 직전 모든 쓰레드의 백 트레이스 정보


(gdb) x/256x 0x1234abcd         <-- x/개수x 주소



현재 버퍼의 index를 확인하고 그에 대한 버퍼의 내용 조회하는 명령



# cltr_memory_datashm_dump(data_shm, &_cltr_bkup.msg[cnt++], bkup_period)

# [전달하는 변수 값 확인]

(gdb) p cnt

 

$47 = 14

# [백업 버퍼의 정보를 cnt 값으로 조회]

(gdb) p *_stcltr_note.bnote@14




* 참고한 페이지


http://www.delorie.com/gnu/docs/gdb/gdb_25.html

http://yusufonlinux.blogspot.kr/2010/11/debugging-core-using-gdb.html

반응형

+ Recent posts