Например, если у меня есть связанный список, включающий функцию:
Код: Выделить всё
class LinkedList{
public:
add(int val){
Node* added = new Node(val);
if (first != nullptr) added->next = first;
first = added;
}
LinkedList(){
first = nullptr;
}
Node first;
class Node{
Node next;
int val;
Node(int val){
this->val = val;
}
}
int findVal(int n) {
return recursiveSearch(first,n);
}
int recursiveSearch(Node* current, int n){
if (current->val == n) return current;
return recursiveSearch(current->next, n);
}
}
Код: Выделить всё
int main(int argc, const char * argv[]) {
LinkedList* ls = new LinkedList();
for (int i = 0; i < n;i++){
ls->add(i);
}
for (int i = 0; i < n+1;i++){
std::cout ls.findVal(i) -> LinkedList::findVal -> LinkedList::recursiveSearch -> current->val.
Но как я могу также отобразить, что цикл выполнялся с вызовом ls.findVal() n раз, прежде чем время n+1 его прервало?
Более того, есть ли способ отслеживать все итерации каждой из моих функций, чтобы увидеть, какие значения переменных были во время каждой из них, без необходимости вручную помещать в мой код массу операторов печати? Чтобы он перечислял каждый отдельный вызов по порядку на протяжении всего процесса до ошибки, начиная с самого начала, не пропуская успешно возвращаемые функции?
и дополнительный вопрос-> Есть ли способ отслеживать переменные или структуры данных сами по себе, чтобы они отображали историю обновления этого типа данных?
Подробнее здесь: [url]https://stackoverflow.com/questions/79135698/how-can-i-see-how-many-times-a-function-has-been-called-when-viewing-a-thread-in[/url]
Мобильная версия