library를 사용할때 log파일을 만들고 싶은데 어떻게 해야하나요?
안녕하세요 먼저 이렇게 좋은 사이트가 있는걸 이제야 알게되었네요. 저도 활동 열심히 해야겠습니다!
도움이 될진 모르겠지만... ㅎㅎ
질문은 다음과 같은데 너무 초보적인 질문일까 부끄럽네요 ㅎㅎ;;
먼저 저는 libiio라는 library를 사용하여 코딩을 진행중인데요. libiio 패키지를 git에서 받아 make하면
/usr/lib에 추가가 됩니다. 이후 mycode.c 에서 include 를 해서 사용합니다.
이제 이 녀석을 쭉 뜯어 들어가야하는데 최초에는 libiio 패키지 자체의 코드들을 분석하였다가.
다음에는 libiio 패키지 코드 자체에 printf를 넣어 다시 make하여 실행 단계를 쫓아가는 방식으로
진행하였습니다.
그런데 이 방식도 점점 불편하여 log file을 만들어서 분석을 할까 하고있습니다. 여기서 궁금한 점이 생겼는데요. mycode.c에서 fopen("log_file.txt","w");를 하고 libiio패키지 자체 코드속에 fprintf를 하려하여도 libiio 입장에서는 make될때 mycode.c를 모르는 상태니 fprintf의 대상이 존재하지 않아서 오류가 일어날 것 같은데 어떻게 해야하나요? 패키지 속에 아에 fopen("log_file.txt","w");를 녹여내야 하나요? 그럼 일이 점점 커질 것 같아서 입니다. 아니면 생각보다 간단한가요?
혹시나 하여 git주소와 https://github.com/analogdevicesinc/libiio
설치 방법 주소 https://wiki.analog.com/resources/tools-software/linux-software/libiio
를 남깁니다.
개발자에게 디버깅은 가장 큰 무기죠
개발자에게 디버깅은 가장 큰 무기죠
디버그 로깅용 라이브러리를 하나 만드시죠.
거기에 해당 라이브러리를 링크하는 방식으로 사용하시면 될듯 싶습니다.
syslog 라는 게 있습니다.
syslog 라는 게 있습니다.
https://www.joinc.co.kr/w/Site/system_programing/Unix_Env/syslog_1
시간을 좀 투자해서 gdb 를 공부해 보시는 것을
시간을 좀 투자해서 gdb 를 공부해 보시는 것을 권장 드립니다. printf 가 강력한 debugging tool 이기는 하지만 외부 library 를 디버깅 하려면 쉽지 않은 문제가 됩니다.
님의 경우에는, libiio 를 빌드시에 compiler 옵션을 -O0 -g3 를 주시고 빌드하신 후, gdb 의 break, backtrace, frame 을 이용하면 원하시는 바를 수행할 수 있을 것 같습니다.
댓글 달기