• Поиск по форумам
  •  
      Этот форум закрыт. Новый форум располагается по адресу http://forum.use.ru  

      Nordnet Форум
      Программирование
      кто "срёт" в чужую память?
     
    Страницы: 1
    Автор Тема:  кто "срёт" в чужую память?
    SToRM1k 

    регистрация: 29-01-2004 в 20:00
    сообщений: 470

    отправлено 14-12-2006 17:58    
    Ребят вот такая вот проблема, есть очень большое приложение, с большим кол-вом модулей, каждый модуль выполняет определенную задачу, и так же модули могут взаимодействовать между собой, по средствам вызова нужных функций. Приложение написано на чистом си, и половина модулей, а так же есть модули написанные на С++. Так вот у нас вылетает SIGSEV постоянно в разных функциях... Понятно дело что кто то лезет не в свою память, вот такой вопрос, есть ли средства для определения того кто это делает, или хотябы в каком месте памяти происходит. Файл коре молчит как рыба :( Утилиты, библиотеки и всяческого рода тестеры приветствуются. Платформа UNIX, LINUX.

    Заранее спасибо!
    NuINu 

    регистрация: 09-04-2004 в 16:36
    сообщений: 2450

    отправлено 18-12-2006 10:56    
    SIGSEV ? это SIGSEGV?
    "Понятно дело что кто то лезет не в свою память"
    что значит кто то?
    SIGSEGV вылетает когда процесс пытается обратиться в память вообще ему не принадлежащую.
    хочешь сказать что какой то модуль сначала пишет в память данных другого модуля, а уже тот используя эти данные вызывает исключение? это врядли, хотя и возможно, но думаю всегда этот вредитель врядли сможет "попадать" в используемую память и SIGSEGV прежде всего должна вызываться у него.

    Что значит core молчит. а что он вообще показывает?
    Кстати а исходники у вас есть, может стоит приложение откомпилировать с параметрами -g.

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

    А так можно еще заглушки писать, и эмуляторы, соответсвенно подставляемы в главный модуль или наоброт вызывющий модули по отдельности.

    что сказать ищите и обрящете, и не выражайся пожалуйста.
    SToRM1k 

    регистрация: 29-01-2004 в 20:00
    сообщений: 470

    отправлено 20-12-2006 10:49    
    2 NuINu нас работает над проектом много, потому и кто то! Core это файл остающийся после SIGSEGV-а содержащий в себе отладочную информацию! с флагом -g бестолку компилировать, потому что приложение многопоточное, так что cgdb заблудиться в первом же потоке. И заглушки тоже не выход! Я же написал что точно нужно.
    NuINu 

    регистрация: 09-04-2004 в 16:36
    сообщений: 2450

    отправлено 26-12-2006 14:12    
    2 SToRM1k:
    А можно поинтересоваться, что у вас за приложение? что оно делает?

    на счет толка от -g и многопоточности я не понял, одно другому не мешает.

    ну и вернемся к коре.
    что конкретно говорит: info stack
    ?
    извини я пользуюсь gdb, попробуй и ты.
    А так чем помочь? есть методы в gbd отладки потоков. там думаю есть также методы анализа стеков различных потоков, я такие сложные приложения не анализировал, вы чем потоки то создаете? fork или pthread_create

    Кстати на счет утилит, попробуй использовать монитор системных вызовов(хотя думаю врядли чем поможет strace)

    Кстати ты знаком с книжкой: Программирование для Linux профессиональный подход?
    смотри стр: 235
    есть еще пример на странице 164, посмотри может будет интересно.

    А еще попробуй спросить в новом форуме, а то мне лень сюда заходить, и вроде тут вообще мало кто бывает.
    Страницы: 1