Невозможно загрузить память с указанного адреса в Eclipse (C ++ / CDT)

0

Когда я нажимаю правой кнопкой мыши на переменной в отладчике, я получаю сообщение об ошибке выше, ссылаясь на адрес x7fffffffe01e (каждый раз). Это также происходит, если я просто набираю ссылку.

Я использую это неправильно, или есть ошибка? Я попытался прочитать статью затмения об использовании монитора памяти, но я подозреваю, что он был написан для среды Java, а не C++.

Я использую Elipse 3.8.1 на linux mint 15 (3.11.0-12-generic) на Samsung NP900X3E Ultrabook

CDT:

C/C++ Поддержка GCC Cross Compiler 1.1.0.dist org.eclipse.cdt.build.crossgcc.feature.group Eclipse CDT C/C++ Поддержка GNU Toolchain Build 8.1.1.dist org.eclipse.cdt.gnu.build.feature.group Eclipse CDT C/C++ Поддержка отладки GNU Toolchain 7.1.1.dist org.eclipse.cdt.gnu.debug.feature.group Eclipse CDT C/C++ Улучшения в просмотре памяти 2.2.0.dist org.eclipse.cdt.debug.ui.memory.feature.group Eclipse CDT C/C++ Поддержка тестирования модулей 7.0.0.dist org.eclipse.cdt.testsrunner.feature.feature.group Eclipse CDT CDT Общая поддержка GDB 7.0.0.dist org.eclipse.cdt.gdb.feature.group Eclipse CDT CDT Visualizer Framework 1.0.0.dist org.eclipse.cdt.visualizer.feature.group Eclipse CDT

  • 1
    g++ -Wall -g ли вы свое приложение в командной строке (используя g++ -Wall -g и, возможно, Makefile )? Вы читали документацию по GDB ? Вы запускали gdb на терминале (возможно, как gdb -tui )? Затмение может действительно усложнить вашу работу ....
  • 0
    Я пробовал командную строку: (gdb) p & r $ 2 = (short *) 0x7fffffffe09ea (gdb) x 0x7fffffffe09e 0x7fffffffe09e: 0x00000007 А также изнутри Eclipse - консоль CDT GDB: x & r 0x7fffffffe01e: 0x00000 он не может загрузить адрес памяти, хотя я не уверен, правильно ли я это делаю. Вот почему я спрашиваю, наверное :) И я скомпилировал из Eclipse: g ++ -O0 -g3 -Wall -c -fmessage-length = 0 -MMD -MP -MF "main.d" -MT "main.d "-o" main.o "" ../main.cpp "g ++ -o" tests "./main.o
Теги:

1 ответ

0
Лучший ответ

Это происходит для указателя с плохим значением (например, потому что он неинициализирован), когда вы разыгрываете его (поэтому адрес недействителен в адресном пространстве процесса). Если это не указатель, а локальная переменная, это означает, что вы повредили свой стек вызовов. Это также может указывать на некоторое повреждение памяти.

Попробуйте также использовать valgrind

Таким образом, в вашей программе есть ошибки. Читайте о неопределенном поведении

Ещё вопросы

Сообщество Overcoder
Наверх
Меню