library를 사용할때 log파일을 만들고 싶은데 어떻게 해야하나요?

eoob20의 이미지

안녕하세요 먼저 이렇게 좋은 사이트가 있는걸 이제야 알게되었네요. 저도 활동 열심히 해야겠습니다!
도움이 될진 모르겠지만... ㅎㅎ

질문은 다음과 같은데 너무 초보적인 질문일까 부끄럽네요 ㅎㅎ;;

먼저 저는 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
를 남깁니다.

god of developer의 이미지

개발자에게 디버깅은 가장 큰 무기죠
디버그 로깅용 라이브러리를 하나 만드시죠.
거기에 해당 라이브러리를 링크하는 방식으로 사용하시면 될듯 싶습니다.

익명 사용자의 이미지

김정균의 이미지

시간을 좀 투자해서 gdb 를 공부해 보시는 것을 권장 드립니다. printf 가 강력한 debugging tool 이기는 하지만 외부 library 를 디버깅 하려면 쉽지 않은 문제가 됩니다.

님의 경우에는, libiio 를 빌드시에 compiler 옵션을 -O0 -g3 를 주시고 빌드하신 후, gdb 의 break, backtrace, frame 을 이용하면 원하시는 바를 수행할 수 있을 것 같습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.