Официальный форум СВД Встраиваемые Системы
05 Декабря, 2016, 19:34:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
 Сайт СВД ВС  Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Postmortem Debugging в IDE  (Прочитано 1002 раз)
LH
Опытный пользователь

Сообщений: 251


« : 27 Сентября, 2010, 16:25:22 »

Не удается выполнить анализ core-файла с помощью IDE версии 4.6.0 в режиме Postmortem Debugging.

IDE запусщен на инструментальном ПК с Windows XP.
 
На целевом x86-ПК работает QNX6.4.1 и запущена программа dumper.

1. Cоздал пробный проект, в котором делается обращение к незарезервированной памяти.

2. Запустил отладочный вариант прграммы на целевом ПК, после аварийного завершения по SIGSEGV получил core-файл.

3. Скопировал core-файл на инструментальный ПК.

4. В окне Debug Configurations выбрал  вариант C/C++ Postmortem debugger,
в закладке Main указал проект и отладочный вариант программы.

5. По нажатию на кнопку Debug выбрал скопированный на интсрументальный ПК Core-файл.

Получаю сообщение IDE об ошибке:

                                 
Цитировать
'Launching имя_проекта' has encountered a problem.
                                  Error creating session.
         Cannot access memory at address 0xe4b   
          Cannot access memory at address 0xe4b
                                        Cannot access memory at address 0xe4b


Что делаю не так?
Спасибо.
Записан
Михаил Колесов
Опытный пользователь

Сообщений: 125



« Ответ #1 : 28 Сентября, 2010, 13:17:17 »

Описываете верно.
Попробуйте тоже самое на простом проекте типа:

Код:
#include <stdio.h>
int main( void ) {

  char *str;
  printf( "Crash test..%s\n", str );
  return 0;
}

Записан
LH
Опытный пользователь

Сообщений: 251


« Ответ #2 : 29 Сентября, 2010, 17:46:48 »

C Вашим вариантом проекта вроде получилось.

А в чем провинился мой вариант?

Код:
#include <stdlib.h>
#include <stdio.h>

int mem[10];
int main( void )
{
int a;
int b;
int i;

printf("Test of dumper in QNX Momentics IDE\n");

a=1;
b=2;

for(i=0; i < 1000000; i++ )
mem[i]=i;

printf("End of Test\n");

return EXIT_SUCCESS;
}

От Олега Большакова: Заменил тег [quote] на [code]
« Последнее редактирование: 29 Сентября, 2010, 22:33:10 от Олег Большаков » Записан
Михаил Колесов
Опытный пользователь

Сообщений: 125



« Ответ #3 : 29 Сентября, 2010, 22:00:46 »

Падает на присвоении?
Код:
mem=i;
Записан
Олег Большаков
Администратор
Житель форума

Сообщений: 2931



WWW
« Ответ #4 : 29 Сентября, 2010, 22:33:57 »

Нет, там другой код:

Код:
mem[i]=i;

Я подправил разметку.
Записан

LH
Опытный пользователь

Сообщений: 251


« Ответ #5 : 30 Сентября, 2010, 03:10:38 »

Да, "слетает" по SIGSEGV на

mem=i;

при i около 1000
Записан
Михаил Колесов
Опытный пользователь

Сообщений: 125



« Ответ #6 : 30 Сентября, 2010, 09:52:20 »

У меня слетает где-то между 20000 и 30000. Затирается информация об используемых библиотеках (здесь libc.so.3), поэтому отладчик отказывается идти дальше. Ситуация вашего теста типична, но не в таких смещениях. Такие смещения это либо неосознанно написанный код, либо код для вируса Wink
« Последнее редактирование: 30 Сентября, 2010, 10:07:30 от Михаил Колесов » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP © 2002-2016 СВД Встраиваемые Системы.
При использовании материалов сайта ссылка на forum.kpda.ru обязательна.

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines | © Aiwan. Kolobok smiles | Sitemap
Valid XHTML 1.0! Valid CSS!
Сайт СВД ВС

В последний раз google посещал эту страницу 15 Октября, 2016, 11:17:07