The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Как найти ошибку?, !*! Gor, 06-Мрт-07, 21:59  [смотреть все]
Всем привет!

У меня такой вопрос: Я получил программу, написанную в С и исходники, которая должна работатъ в embedded Linux na embedded Server.
Однако программа имеет ошибку и не работает как надо.

Сейчас пытаюсъ найти ошибку, просматривая программу и исходники, но ошибку найти не могу. (Я совсем не спец. в программировании, - толъко учусь...)

Посоветуйте мне пожалуйста методу, которая мне могла бы помочь.

Немного о программе: тест-программа, посылающая актуальное время на один CAN-bus и принимающая их обратно с другого.(CAN-bus соединены между собой)

  • Как найти ошибку?, !*! NuINu, 10:24 , 07-Мрт-07 (1)
    >Всем привет!
    >
    >У меня такой вопрос: Я получил программу, написанную в С и исходники,
    >которая должна работатъ в embedded Linux na embedded Server.
    >Однако программа имеет ошибку и не работает как надо.
    >
    >Сейчас пытаюсъ найти ошибку, просматривая программу и исходники, но ошибку найти не
    >могу. (Я совсем не спец. в программировании, - толъко учусь...)
    >
    >Посоветуйте мне пожалуйста методу, которая мне могла бы помочь.
    Печатай все!!! освой в программировании одну функцию:
    printf

  • Как найти ошибку?, !*! Artem_Korneev, 03:40 , 15-Мрт-07 (4)
    Что значит виснет? Не отвечает или падает?
    Можешь воспользоваться отладкой. Либо напрямую, через gdb, либо через вызов gdb из vim/emacs/kdevelop/ddd/что-то ещё.

    А общий метод тебе подсказали -- локализуй место, в котором происходит зависание и выводи значения всех переменных, которые могут вызвать проблемы.

    • Как найти ошибку?, !*! Gor, 23:09 , 15-Мрт-07 (5)
      >Что значит виснет? Не отвечает или падает?
      >Можешь воспользоваться отладкой. Либо напрямую, через gdb, либо через вызов gdb из
      >vim/emacs/kdevelop/ddd/что-то ещё.
      >
      >А общий метод тебе подсказали -- локализуй место, в котором происходит зависание
      >и выводи значения всех переменных, которые могут вызвать проблемы.


      Программа запускалась, бус А начинал отсылать телеграммы, в момент когда я включал бус Б на получение телеграмм, происходило терминирование программмы с сигналом на выход не помню сейчас что именно killed.

      Дебаггивание осложнялось тем, что на embedded Linux практически ничего нет. Я нашел программу правда, которую можно на нём запустить и параллельно с Ноутбука с помошью gdb дебаггить.

      Параллельно я кажется нашёл проблему. В программе были использованы threads, которые должны были параллельно работать. В этом случае нужно, как я понял из одной книги, использовать mutex или semafor.

      После этого я сделал из этой программы две без сложных для меня пока наворотов с вариациями threads,- одна запускающая один бус на отсылку, другая другой бус на приём. Так для меня даже лучше, так как в конечном итоге программы должны были работать на двух разных машинах.
      И всё заработало! Сейчас надо ещё детали доделать, но в принципе программы работают!




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру