有没有办法在运行时获取C代码中的源代码行号?
有没有办法在运行时获取C代码中的源代码行号?有没有办法在运行时获取C代码中的源代码行号?,c,runtime-error,line-numbers,C,Runtime Error,Line Numbers,有没有办法在运行时获取C代码中的源代码行号? 它背后的思想是,假设一个软件是用纯C语言制作的。.exe文件分发给对C一无所知的用户。现在,如果有任何错误,用户可以查看行号并将错误报告给制造商,以便在制造商现场进行调试。我只是想调试运行时错误,并在运行源代码时获得相应的行号。我是这些东西的初学者。如果您使用的是GCC编译器,您可以使用标准预定义宏-\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
它背后的思想是,假设一个软件是用纯C语言制作的。.exe文件分发给对C一无所知的用户。现在,如果有任何错误,用户可以查看行号并将错误报告给制造商,以便在制造商现场进行调试。我只是想调试运行时错误,并在运行源代码时获得相应的行号。我是这些东西的初学者。如果您使用的是GCC编译器,您可以使用标准预定义宏-
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
编译器将在编译时填写行号
例如:-
printf(“%d”行)
您可以使用内置的宏\uuuuu LINE\uuuu
和\uuuu FILE\uuuu
,它们总是扩展到当前文件名和行号
#include <stdio.h>
int main(int argc, char *argv[])
{
if(argc<2)
{
printf("Error: invalid arguments (%s:%d)\n", __FILE__, __LINE__);
return 0;
}
printf("You said: %s\n", argv[1]);
return 0;
}
#包括
int main(int argc,char*argv[])
{
如果(argc使用gdb代替。但我想它会起作用:
if(someThingsWrong())
printf("wrong at line number %d in file %s\n", __LINE__, __FILE__);
使用调试符号编译并在gdb这样的调试器中运行代码还不够好吗?这是一个dup,可以回答您的特定问题。但正如第一条评论所指出的,更好的调试方法是使用调试器。我在运行时询问行号。您能解释一下吗?我是编写代码的初学者,请阅读duplica的链接问题。它解释了。你读了吗?问题现在被编辑了。以前我认为我无法正确解释\uuuuuuuuuuuuuu
宏不是特定于GCC的。\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。