如何解决在动态分配的子进程中使用`gdb`吗?
我绝对不熟悉C和gdb
,但不是编程人员。
我想调试失败的单元测试引用的库。每个单元测试都有一个子进程(我假定保持内存分离),并且我不愿意更改它以在单个进程中运行。相反,我想告诉我的gdb
自动跟踪由我的gdb
运行的父进程创建的每个子进程。
正确的做法是什么?
解决方法
我想告诉我的gdb自动跟踪由我的gdb运行的父进程创建的每个子进程。
您可以编写一个Python程序来做到这一点(假设最近使用嵌入式Python构建的GDB)。
通常更容易的方法是像这样修改失败的测试用例(我在这里使用gUnit示例,但是使用相同的技术works in general):
TEST(Foo,Bar) {
// Start added code.
volatile int go = 0; // Modified from GDB.
while (go == 0) {
fprintf(stderr,"Run 'gdb -p %d'\n",getpid());
sleep(1);
}
// End.
EXPECT_EQ(123,Bar()); // This is the test which fails.
}
现在只需运行所有测试,在运行测试用例时附加GDB,根据需要设置断点,将go
设置为1并将continue
设置。
P.S。大多数测试框架已经具有在故障时附加调试器的机制。如果您要处理的不是这样,则可能需要修复那个。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。