Официальный форум СВД Встраиваемые Системы
18 Апрель, 2024, 16:15:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

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

Сообщений: 345


« : 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
Ветеран

Сообщений: 345


« Ответ #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;
Записан
Олег Большаков
Легенда

Сообщений: 3140



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

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

Код:
mem[i]=i;

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

Сообщений: 345


« Ответ #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-2024 СВД Встраиваемые Системы.
При использовании материалов сайта ссылка на forum.kpda.ru обязательна.

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

В последний раз google посещал эту страницу 19 Январь, 2022, 09:08:33