Я реализовывал набор массивов на C++ и хотел отслеживать значения в нем с помощью gdb, поэтому я создал точку останова после инициализации данных. GDB в Vscode запущен, но все, что я вижу в наборе, — это множество указателей. Я не вижу никаких значений для подражания. Я знаю, что наборы реализованы с использованием красно-черных деревьев, поэтому указатели происходят оттуда, но должен быть способ увидеть значения.
Поэтому я захожу на сайт Online gdb, чтобы проверить, не является ли это делом gdb. Но к счастью смог показать свою стихию
Детали окружения: Версия GDB (Моя локальная): GNU gdb (GDB) 8.3.1 Версия GDB (онлайн gdb): gdb 7.11.1
Версия G++v (мой локальный): g++ (GCC) 9.2.0 Версия G++ (онлайн gdb): g++ (GCC) 5.4.1
Так что я делаю неправильно? Или vscode не может показать значения?
РЕДАКТИРОВАТЬ Поэтому я попытался использовать gdb из командной строки.
15 for (int i=0; i<m; i++){
(gdb) print s
$1 = {_M_t = {
_M_impl = {<std::allocator<std::_Rb_tree_node<std::array<int, 2> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::array<int, 2> > >> = {<No data fields>}, <No data fields>}, <std::_Rb_tree_key_compare<std::less<std::array<int, 2> > >> = {
_M_key_compare = {<std::binary_function<std::array<int, 2>, std::array<int, 2>, bool>> = {<No data fields>}, <No data fields>}}, <std::_Rb_tree_header> = {_M_header = {_M_color = std::_S_red, _M_parent = 0x181610,
_M_left = 0x181a40, _M_right = 0x181b60}, _M_node_count = 5}, <No data fields>}}}
(gdb)
Для тех, кто интересуется, как я генерирую свой набор
int n,m; cin>> n>>m;
set <array<int,2>> s;
for(int i=0; i<n;i++){
int a; cin>>a;
s.insert({a,i});
}
Итак, как мне получить доступ к своим значениям?
@PaulMcKenzie Спасибо, я добавил версию
Наконец я нашел свой ответ после множества поисков в Google. Ответ был довольно-принтеры, я работаю в Windows, поэтому мне пришлось установить MinGW, но у меня не было возможности поддерживать сценарии Python, а также отсутствовала библиотека libstdc++-v3.
PATH
в переменных системной средыgdb --version
launch.json
и task.json
, чтобы отразить изменение местоположения (если оно было изменено).
Вы действительно должны указать, какую версию gdb вы используете, и версию, используемую в онлайн-компиляторе.