gtest:将gdb断点放在哪里

时间:2019-03-18 22:11:07

标签: gdb googletest

多年来,我一直在使用各种xunit测试(从2000年代初期的cppunit开始)。在所有情况下,都非常容易设置故障的断点:有一个函数可以指示检测到的故障:

b'atf :: tests :: tc :: fail(std :: string const&)'    命令    上1    结束

gtest似乎有很大的不同,用gtest做相同的既定做法是什么?

2 个答案:

答案 0 :(得分:1)

  

使用gtest进行相同操作的既定做法是什么?

阅读gtest.cc时,我看到的最接近的是--gunit_break_on_failure,这将导致代码在x86 / Linux上执行INT3陷阱,并在Windows上调用DebugBreak

答案 1 :(得分:0)

如果您需要在测试开始时休息以观察某些内容,请首先get the symbol names present in the executable,然后使用grep表示感兴趣的测试名称,例如:

materials

如果您想在这里休息:

nm -C myclass_test | grep MyTest0

在该grep的结果中,最有前途的似乎是:

TEST(MainTest, MyTest0) {
    EXPECT_EQ(1, 1);
}

等等:

0000000000407c64 T MainTest_MyTest0_Test::TestBody()

和:

gdb myclass_test

然后这让我进入了所需测试的开始。

在修订版2上测试过with this setup