在#include中编译时,GDB无法告诉不同的源文件?

时间:2013-11-07 02:21:49

标签: c gdb

只是一个stdarg.h的小程序,当我在单个源文件中组织源文件时如下:

#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>

void
print(const char *, ...);
void
print(const char *format, ...)
{
  va_list vlist;
  va_start(vlist, format);
  vfprintf(stdout, format, vlist);
  va_end(vlist);
  return;
}

int 
main(int argc, char **argv)
{
  const char *message = "Just a test";

  print("==> %s <==\n", message);

  return EXIT_SUCCESS;
}

单个文件中的下面代码在调试时在gdb下运行良好,它停在我预期的位置。 但是当我在3个文件中组织代码时:print.c main.c test.c

/* print.c */
void
print(const char *, ...);
void
print(const char *format, ...)
{
  va_list vlist;
  va_start(vlist, format);
  vfprintf(stdout, format, vlist);
  va_end(vlist);
  return;
}
/* main.c */
int 
main(int argc, char **argv)
{
  const char *message = "Just a test";

  print("==> %s <==\n", message);

  return EXIT_SUCCESS;
}
/* test.c */
#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>

#include "print.c"
#include "main.c"

我使用命令gcc -g test.c,并在linux下运行它。在打印时断开,它在一个警告“错误删除断点0”内拒绝中断并继续运行到最后。

我想这可能与stdarg.h有关,因为我总是以这种方式组织代码,但第一次遇到问题。

0 个答案:

没有答案