Вопрос по c++, gdb – Почему я не могу войти в стандартную библиотечную функцию C ++ cout в GDB?

4

Я написал простуюtest.cc следующее:

#include <iostream>
using namespace std;

int main()
{
  cout << "Hello world" << endl;
  return 0;
}

И я собрал с:

g++ -g test.cc -o test.o

Я побежалgdb и поставить точку останова на"Hello world" линия:

$ gdb test.o
(gdb) b 7
(gdb) c

затемgdb останавливается на"Hello world" линия, но когда я бегу

(gdb) s

Он не может вступить вcout функция. Итак, мой вопрос, как я могу вступить вcout функционировать?

Для чего это стоит,cout не является функцией. Вы ищете функцию:operator <<. Limited Atonement
Я могу шагнуть вstd::set конструктор, но не вoperator<< изcout, Интересно, почему:stackoverflow.com/questions/2558153/… Ciro Santilli 新疆改造中心 六四事件 法轮功

Ваш Ответ

2   ответа
6

формацией, он не знает, как войти в библиотеку; он может только перешагнуть через него (то есть работать до тех пор, пока управление не вернется к коду с отладочной информацией).

Обратитесь к документации для вашей системы, чтобы узнать, как установить отладочную версию стандартных библиотек C и C ++.

Вы могли бы лучше попросить об этом для начала. Это звучит запутанно, но недостаточно информации, чтобы определить, почему & # x2014; У вас есть более конкретный пример, где происходит этот сбой? (Также включите платформу. OS X 'sgdb имеет некоторые известные ошибки, например.)
да, ваш ответ вполне соответствует ожиданиям. Шаг в ногу нужна какая-то дополнительная информация. stackunderflow
Вышеуказанный вопрос не является моей реальной точкой зрения. В другой моей программе я попытался войти в функцию (не стандартные библиотеки C / C ++) в другом файле. Но он терпит неудачу и говорит ".gdbinit: Нет такого файла или каталога. & quot ;, & quot; Остановлено из-за события общей библиотеки & quot ;, & quot; Невозможно получить доступ к памяти по адресу 0x1 & quot ;. Вы знаете, в чем может быть проблема? stackunderflow
1

только намного более болезненно. УвидетьВот.

Есликак яВы просто хотите прерывать другие вызовы той же функции, не копаясь глубже, не слишком сложно установить точку останова для адреса функции, полученного в результате разборки с помощьюdisas.

Похожие вопросы