看帖神器
未名空间
追帖动态
头条新闻
每日新帖
最新热帖
新闻存档
热帖存档
文学城
虎扑论坛
未名空间
北美华人网
北美微论坛
看帖神器
登录
← 下载
《看帖神器》官方
iOS App
,体验轻松追帖。
C++ Test里面用一个函数来检查,但是如何让出错的行号显示调用
查看未名空间今日新帖
最新回复:2021年11月1日 14点49分 PT
共 (4) 楼
返回列表
订阅追帖
只看未读
更多选项
阅读全帖
只看图片
只看视频
查看原帖
b
bihai
大约 3 年
楼主 (未名空间)
class Fixture: public ... {
void Check(a) {
ASSERT_TRUE(a.xx);
ASSERT_FALSE(a.yy);
ASSERT_EQ(a.zz_);
}
};
Test(Fixture, A1) {
A a = ..;
Check(a);
}
Test(Fixture, A2) {
A a(..);
Check(a);
A b(..);
Check(b);
}
调试的时候都显示错在Check代码那些行,看不出到底是哪一行出问题了,比如是a,还是b。
C++里面有可以显示调用者行号吗?
难道要组合使用__LINE__ ?
void Check(a, string s) {
ASSERT_TRUE(a.xx, s);
ASSERT_FALSE(a.yy, s);
ASSERT_EQ(a.zz_, s);
}
#define EASY_CHECK(a) Check(a, __LINE__)
还有别的办法吗?
b
bihai
大约 3 年
2 楼
看到C++20有一个,可惜太新了
void Check(A a, const source_location loc = source_location::current())
{
ASSERT_TRUE(a.x, loc.line());
}
【 在 bihai (学得不好) 的大作中提到: 】
: class Fixture: public ... {
: void Check(a) {
: ASSERT_TRUE(a.xx);
: ASSERT_FALSE(a.yy);
: ASSERT_EQ(a.zz_);
: }
: };
: Test(Fixture, A1) {
: A a = ..;
: Check(a);
: ...................
h
heteroclinic
大约 3 年
3 楼
glibc 的 backtrace
重在参合
h
heteroclinic
大约 3 年
4 楼
glibc 的 backtrace
重在参合
请输入帖子链接
收藏帖子
class Fixture: public ... {
void Check(a) {
ASSERT_TRUE(a.xx);
ASSERT_FALSE(a.yy);
ASSERT_EQ(a.zz_);
}
};
Test(Fixture, A1) {
A a = ..;
Check(a);
}
Test(Fixture, A2) {
A a(..);
Check(a);
A b(..);
Check(b);
}
调试的时候都显示错在Check代码那些行,看不出到底是哪一行出问题了,比如是a,还是b。
C++里面有可以显示调用者行号吗?
难道要组合使用__LINE__ ?
void Check(a, string s) {
ASSERT_TRUE(a.xx, s);
ASSERT_FALSE(a.yy, s);
ASSERT_EQ(a.zz_, s);
}
#define EASY_CHECK(a) Check(a, __LINE__)
还有别的办法吗?
看到C++20有一个,可惜太新了
void Check(A a, const source_location loc = source_location::current())
{
ASSERT_TRUE(a.x, loc.line());
}
【 在 bihai (学得不好) 的大作中提到: 】
: class Fixture: public ... {
: void Check(a) {
: ASSERT_TRUE(a.xx);
: ASSERT_FALSE(a.yy);
: ASSERT_EQ(a.zz_);
: }
: };
: Test(Fixture, A1) {
: A a = ..;
: Check(a);
: ...................
glibc 的 backtrace
重在参合
glibc 的 backtrace
重在参合