Есть ли способ сбросить стек вызовов в запущенном процессе на C или C ++ каждый раз, когда вызывается определенная функция? Я имею в виду что-то вроде этого:
void foo()
{
print_stack_trace();
// foo's body
return
}
Где print_stack_trace
работает аналогично caller
в 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.
* * Фон тысяча двадцать-один * * тысяча двадцать-дв
У меня есть тестовый прогон, который ведет себя по-разному в зависимости от некоторых параметров командной строки, которые не должны влиять на это поведение. В моем коде есть генератор псевдослучайных чисел, который, как я полагаю, вызывается по-разному в зависимости от этих переключателей. Я хочу иметь возможность запустить тест с каждым набором переключателей и посмотреть, вызывается ли генератор случайных чисел по-разному для каждого из них.