Я пишу программу, которая выполняет некоторые модульные тесты кода, написанного моими коллегами. Я использую Google C++ Testing Framework. Я запускаю функцию, которая порождает 3 потока, а затем работает в течение 30 секунд. После запуска программа завершается со статусом 0. Очевидно, это не ожидаемое поведение. Я знаю, что это не продвинется дальше, потому что я поместил оператор cout в следующую строку.
Мой вопрос: как лучше всего отладить это с помощью gdb? Это сложно, потому что программа не segfault или что-то в этом роде, она просто завершает работу. Есть ли способ перехватить выходной вызов, а затем получить длинную обратную трассировку?
Спасибо за помощь.
Редактировать:
cSystemCfg* pSystemCfg = new cSystemCfg();
std::cout << "Before runThing" << std::endl;
pSomething->runThing(&acq, pHwIf, pSystemCfg, pIf);
//Exits here, never gets to the next line
std::cout << "After runThing" << std::endl;
//Exits here, never gets to the next line
- person sbi   schedule 30.09.2010