dgb로 디버깅할때 다음과 같은 에러가 발생합니다.

jhanglim의 이미지

제가 디버깅 하려는 프로그램은 http//www.linuxtv.org 에 있는 szap이라는 프로그램 입니다.

컴파일은 다음과 같이 했습니다.

gcc szap.c -Wall -g -O2 -I../../include -I../lib -o szap ../lib/lnb.o

gdb로 디버깅 하기 위해서 $gdb ./szap

그리고 main 프로그램의 처음에 브레이크 포인트를 걸어놨습니다.
그리고 run 을 수행했습니다.

다음은 그때 발생한 에러 메세지 입니다.

(gdb)run
Starting program: /root/db/linuxtv-dvb-apps-1.1.0/szap/szap
Error while mapping shared library sections:
: Success.
Error while reading shared library symbols:
: No such file or dirctory.
Error while reading shared library symbols:
: No such file or dirctory.
Error while reading shared library symbols:
: No such file or dirctory.

Breakpoint 1, main( argc=1, argv=0xfeef4574) at szap.c:475
475 int list_channels = 0;
(gdb)

어떻게 해야 하는지요??

File attachments: 
첨부파일 크기
파일 szap.c13.66 KB
sunyzero의 이미지

jhanglim wrote:
제가 디버깅 하려는 프로그램은 http//www.linuxtv.org 에 있는 szap이라는 프로그램 입니다.

컴파일은 다음과 같이 했습니다.

gcc szap.c -Wall -g -O2 -I../../include -I../lib -o szap ../lib/lnb.o

위에서 보면 몇가지 문제점이 보이는군요. 일단은 -O2 입니다. 디버깅할때는 최적화를 하면 인스트럭션이 달라져서 라인단위가 뒤죽박죽이 됩니다. 따라서 이를 빼주는게 맞고, 하지만 문제는 이게 아니라 gdb에서의 에러는 라이브러리를 찾지 못해서입니다. 실행은 제대로 됩니까? 실행조차 안된다면 관련 라이브러리를 설치하시고 실행되는것을 확인하시고, 실행은 되는데 안된다면 라이브러리 패스를 제대로 잡아주시고 하시기 바랍니다. LD_LIBRARY_PATH 말입니다.

또한 ../lib/lnb.o 도 제대로 -g 옵션으로 컴파일을 해주셔야 라인단위 디버깅이 가능합니다.

========================================
* The truth will set you free.

jhanglim의 이미지

실행은 됩니다만 디버깅시에만 에러가 가는군요
님이 말씀해 주신대로 최적화 옵션 빼도 계속 디버깅시 에러가 나는군요
그런데 소스에서 라이브러리 특별히 불러쓰는거 없는거 같은데 디버깅 하면 같은 에러 메세지가 뜹니다.

/////////////////////////////////////////////////////////////////////
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <string.h>
#include <errno.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/poll.h>
#include <fcntl.h>
#include <time.h>
#include <unistd.h>

#include <stdint.h>
#include <sys/time.h>

#include <linux/dvb/frontend.h>
#include <linux/dvb/dmx.h>
#include "lnb.h"

<<<생략>>>
int main(int argc, char *argv[])
{
const char *home;
char chanfile[2 * PATH_MAX];
int list_channels = 0;
unsigned int chan_no = 0;
const char *chan_name = NULL;
unsigned int adapter = 0, frontend = 0, demux = 0, dvr = 0;
int opt, copt = 0;

lnb_type = *lnb_enum(0);
while ((opt = getopt(argc, argv, "hqrn:a:f:d:c:l:xi")) != -1) {
switch (opt)
{
case '?':
case 'h':
default:
bad_usage(argv[0], 0);
case 'q':
list_channels = 1;
break;
case 'r':
dvr = 1;
break;
case 'n':
chan_no = strtoul(optarg, NULL, 0);
break;
case 'a':
adapter = strtoul(optarg, NULL, 0);
break;
case 'f':
frontend = strtoul(optarg, NULL, 0);
break;
case 'd':
demux = strtoul(optarg, NULL, 0);
break;
case 'c':
copt = 1;
strncpy(chanfile, optarg, sizeof(chanfile));
break;
case 'l':
if (lnb_decode(optarg, &lnb_type) < 0) {
bad_usage(argv[0], 1);
return -1;
}
break;
case 'x':
exit_after_tuning = 1;
break;
case 'i':
interactive = 1;
exit_after_tuning = 1;
}
}
lnb_type.low_val *= 1000; /* convert to kiloherz */
lnb_type.high_val *= 1000; /* convert to kiloherz */
lnb_type.switch_val *= 1000; /* convert to kiloherz */
if (optind < argc)
chan_name = argv[optind];
if (chan_name && chan_no) {
bad_usage(argv[0], 0);
return -1;
}
if (list_channels && (chan_name || chan_no)) {
bad_usage(argv[0], 0);
return -1;
}
if (!list_channels && !chan_name && !chan_no && !interactive) {
bad_usage(argv[0], 0);
return -1;
}

if (!copt) {
if (!(home = getenv("HOME"))) {
fprintf(stderr, "error: $HOME not set\n");
return TRUE;
}
strncpy(chanfile, home, sizeof(chanfile));
strcat(chanfile, "/.szap/" CHANNEL_FILE);
}

printf("reading channels from file '%s'\n", chanfile);

if (!read_channels(chanfile, list_channels, chan_no, chan_name,
adapter, frontend, demux, dvr))
return TRUE;

return FALSE;
}

댓글 첨부 파일: 
첨부파일 크기
파일 0바이트

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.