Есть ли способ сбрасывать стек вызовов в запущенном процессе на C или C ++ каждый раз, когда вызывается определенная функция? Я имею в виду примерно следующее:
void foo()
{
print_stack_trace();
// foo's body
return
}
Где print_stack_trace
работает аналогично вызывающему
в Perl.
Или что-то вроде этого:
int main (void)
{
// will print out debug info every time foo() is called
register_stack_trace_function(foo);
// etc...
}
где register_stack_trace_function
устанавливает своего рода внутреннюю точку останова, которая будет вызывать печать трассировки стека всякий раз, когда вызывается foo
.
Есть ли что-нибудь подобное в какой-нибудь стандартной библиотеке C?
Я работаю над Linux, использующий GCC.
У меня есть тестовый запуск, который ведет себя по-разному в зависимости от некоторых переключателей командной строки, которые не должны влиять на это поведение. В моем коде есть генератор псевдослучайных чисел, который, как я полагаю, вызывается по-разному в зависимости от этих переключателей. Я хочу иметь возможность запускать тест с каждым набором переключателей и видеть, вызывается ли генератор случайных чисел по-разному для каждого из них.