问题描述
- 编码显示c函数被调用时在源文件中的位置
-
编码显示c函数被调用时在源文件中的位置.
例如
void test{
//在这里弹出对话框,显示被调用时的位置.
}
在函数 void testCall(){
test(); //在这里弹出对话框,显示testCall 在源文件中的行号(+1)
}
当执行到 testCall()时显示行test()所在行号---不是void test{}的行号,而是 void testCall(){}的行号(+1)
解决方案
这个像是编译器做的事情。分析源码吧
解决方案二:
你应贴出可供测试的代码
实在无法理解你的问题是什么!
解决方案三:
使用一些宏跟踪调试
ANSI标准说明了五个预定义的宏名。它们是:
LINE
FILE
DATE
TIME
STDC
如果编译器不支持这些宏,就只能自己分析源代码所在的 C 文件了。
解决方案四:
能否输出行号取决于编译器产生的调试符号信息是否包含了行号,这和不同编译器,以及你的编译选项有关。
比如gcc
http://linux.chinaunix.net/techdoc/develop/2009/02/11/1061408.shtml
VC
http://www.cnblogs.com/xuanhun/archive/2011/10/11/2207398.html
解决方案五:
我在百度知道提出了同样问题, 得到了一个回答,但并不完全满意,大家可以参考一下:
用参数把test被调用时的行号传进去 然后显示就可以了
比如
void test(int line) {
printf("test is called at line %dn", line);
}
void testCall()
{
test(__LINE__);
}
追问
2014-12-31 17:42 很好的想法! 确定采纳你的方案!希望有更好的方案: 不更改原来函数的声明类型,仅仅插入代码实现调试目的.这样会很难吗?希望继续提供帮助!
时间: 2024-09-27 17:53:23