gdb에서 에러난 곳의 소스코드 라인번호 알수 있는 방법이 없나요?
r로 돌리면 SIGABORT가 뜨고 종료되는데 소스코드 몇번째에서 그런건지 알수가 없네요.
gdb에서 에러난 곳의 소스코드 라인번호 알수 있는 방법이 없나요? r로 돌리면 SIGABORT가 뜨고 종료되는데 소스코드 몇번째에서 그런건지 알수가 없네요.
where 아닌가요?
즐겁게 살아 볼까나~*
(gdb) bt #0 0x80483ea in wib (no1=8, no2=8) at eg1.c:7 #1 0x8048435 in main (argc=1, argv=0xbffff9c4) at eg1.c:21
bt로 call stack을 확인하시면 됩니다. up , down 으로 call stack 을 이동하시면서 보고싶은 값들을 체크하시면 되구요.
위 예제에는 eg1.c의 21번째 라인에서 7번째 라인의 함수를 호출한것을 확인하실 수 있습니다.
http://www-128.ibm.com/developerworks/kr/library/l-gdb/
여기 간단한 gdb 사용법이 정리되어 있습니다. 참고 하세요.
두분다 감사드립니다.
bt해서 나오나 보네요...^^ 미처 못본거 같습니다..감사합니다.
두분다 감사드립니다. bt해서 나오나 보네요...^^ 미처 못본거 같습니다..감사합니다.
아 위에 답변을 쓴 사람입니다. ^^ bt로 안나오는 경우도 있다는걸 깜빡했네요.
메모리를 날린 경우 bt등으로 안나올 수도 있습니다.
(gdb) bt #0 0x004e87a2 in ?? () #1 0x00528955 in ?? () #2 0xfef9d560 in ?? () #3 0x00623ff4 in ?? () #4 0x00000000 in ?? ()
이런경우에는 메모리를 날려먹어 스택까지 날아간경우입니다. 큰 용량의 자료구조나 String등을 잘못 사용했을 경우 자주 발생합니다. 이럴때는 gdb로 잡기는 힘들고 printf나 file log를 남겨서 잡아야 합니다. oTL..
Never Ending 삽질.
네 감사합니다.66
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
Re: gdb에서 에러난 곳의 소스코드 라인번호 알수 있는 방법이
where 아닌가요?
즐겁게 살아 볼까나~*
Re: gdb에서 에러난 곳의 소스코드 라인번호 알수 있는 방법이
bt로 call stack을 확인하시면 됩니다.
up , down 으로 call stack 을 이동하시면서 보고싶은 값들을 체크하시면 되구요.
위 예제에는 eg1.c의 21번째 라인에서 7번째 라인의 함수를 호출한것을 확인하실 수 있습니다.
http://www-128.ibm.com/developerworks/kr/library/l-gdb/
여기 간단한 gdb 사용법이 정리되어 있습니다.
참고 하세요.
두분다 감사드립니다.
두분다 감사드립니다.
bt해서 나오나 보네요...^^ 미처 못본거 같습니다..감사합니다.
Re: 두분다 감사드립니다.
아 위에 답변을 쓴 사람입니다. ^^
bt로 안나오는 경우도 있다는걸 깜빡했네요.
메모리를 날린 경우 bt등으로 안나올 수도 있습니다.
이런경우에는 메모리를 날려먹어 스택까지 날아간경우입니다.
큰 용량의 자료구조나 String등을 잘못 사용했을 경우 자주 발생합니다.
이럴때는 gdb로 잡기는 힘들고 printf나 file log를 남겨서 잡아야 합니다. oTL..
Never Ending 삽질.
^^
네 감사합니다.66
댓글 달기