2014-09-13 2 views
0

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

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

Я использую ELIPSE 3.8.1 на Linux Mint 15 (3.11.0-12-родового) на Samsung NP900X3E Ultrabook

CDT: Поддержка

C/C++ кросс-компилятора GCC 1.1 .0.dist org.eclipse.cdt.build.crossgcc.feature.group Eclipse CDT C/C++ GNU Toolchain Build Support 8.1.1.dist org.eclipse.cdt.gnu.build.feature.group Eclipse CDT C/C++ GNU Toolchain Debug Support 7.1.1.dist org.eclipse.cdt.gnu.debug.feature.group Eclipse CDT C/C++ Memory View Enhancements 2.2.0.dist org.eclipse.cdt.debug.ui.memory.feature .grou p 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. группа Eclipse CDT CDT Visualizer Framework 1.0.0.dist org.eclipse.cdt.visualizer.feature.group Eclipse CDT

+1

Вы компилировали приложение в командной строке (используя 'g ++ -Wall -g' и, возможно,' Makefile')? Вы прочитали документацию по [gdb] (https://www.gnu.org/software/gdb/)? Вы запустили 'gdb' на терминале (возможно, как' gdb -tui')? Затмение действительно может усложнить работу .... –

+0

Я попытался командную строку: (GDB) р и г $ 2 = (сокр *) 0x7fffffffe09ea (GDB) х 0x7fffffffe09e 0x7fffffffe09e: \t 0x00000007 А также изнутри Затмения - консоль CDT GDB: х и г 0x7fffffffe01e: \t 0x00000007 Но когда я пытаюсь монитор, он говорит, что не может загрузить адрес памяти я не уверен, если я правильно делать это, хотя , Вот почему я спрашиваю, я думаю :) И я скомпилировал из 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 – lash

ответ

0

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

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

Так что есть ошибки в вашей программе. Читайте о undefined behavior

Смежные вопросы