Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

Отладка программы   Найти похожие ветки 

 
Германн ©   (2010-01-20 01:44) [0]

Ищу простой способ отладки программы на двух рабочих местах. Одно место в офисе, другое дома. Места отличаются одно от другого наличием или отсутствием железа, с которым должна работать программа.
Можете посоветовать простой способ переноса проекта с одного компьютера на другой? Естественно, что на домашнем компьютере требуется отладка только тех функций, которые не обращаются к железу. Но на домашнем компьютере требуется запретить вызов функций работающих с железом.

P.S. Проверка наличия железа исключена. Понимаю что это высказывание слишком неприглядно смотрится, но желающим понять, готов объяснить почему исключена. Только это довольно долгое повествование.

P.P.S. Пробовал многое, но всё сохраняется в файле проекта. Следовательно простой перенос исключается или я чего-то не знаю.


 
@!!ex ©   (2010-01-20 01:53) [1]

Эмуляция драйвера самый просто вариант. Благо dll(в общем случае) под такое дело пишется за 15 минут.


 
Германн ©   (2010-01-20 02:24) [2]


> @!!ex ©   (20.01.10 01:53) [1]
>
> Эмуляция драйвера самый просто вариант.

Все "эмуляции" железа исключены полностью. Объяснить почему - могу. Если потребуешь.
Да и не в том суть.
Тут нет "драйвера" как единственной сущности. Тут целая система.


 
Кто б сомневался ©   (2010-01-20 02:27) [3]

На новую работу устроился что-ли? :)
По вопросу ежедневно в течении 4 дней.


 
Германн ©   (2010-01-20 02:44) [4]


> Кто б сомневался ©   (20.01.10 02:27) [3]
>
> На новую работу устроился что-ли? :)
> По вопросу ежедневно в течении 4 дней.

Устроился. В конце августа прошлого года. Об чём и доложился своевременно сообчеству ДМ.

Серьёзно?
Вот так сложилось, что сейчас наступила пора "сложных" проблем.
Сложных - не тождественно - важных. Подчищаю ныне проект, чтобы "сдать его с концами" если вдруг!

Скорее всего "вдруг" не наступит. Но...


 
Bob   (2010-01-20 08:20) [5]

> Германн ©
> ... требуется запретить вызов функций работающих с железом.

 А {IFDEF ...} не годится для этих целей?

> Все "эмуляции" железа исключены полностью.

Может все-таки намекнете почему ?


 
Сергей М. ©   (2010-01-20 08:38) [6]


> Германн


Дома приличный доступ в Тырнет есть ?
Удаленный доступ к рабочему АРМ возможен ?
Тогда все до безобразия просто : в руки берется Borland Remote Debugger - и вперед с песней !)


 
turbouser ©   (2010-01-20 09:06) [7]

Если
> Удаленный доступ к рабочему АРМ возможен

то, возможно, вполне хватит и RDP


 
Сергей М. ©   (2010-01-20 09:57) [8]


> вполне хватит и RDP


А не жирно будет гонять туда-сюда графику ради такого удовольствия ?
Хамачи на оба конца - и всех делов)


 
Skyle ©   (2010-01-20 10:03) [9]


> Сергей М. ©   (20.01.10 09:57) [8]

Работал я по терминалу. 20 Мб в рабочий день не такая уж и графика.


 
Дмитрий С ©   (2010-01-20 10:12) [10]

Дома работать - зло.


 
@!!ex ©   (2010-01-20 10:13) [11]

> [2] Германн ©   (20.01.10 02:24)

Было бы интересно почему.


 
Сергей М. ©   (2010-01-20 10:18) [12]


> Skyle ©   (20.01.10 10:03) [9]


Гонять графику без явной на то нужды по меньшей мере неразумно.


 
Сергей М. ©   (2010-01-20 10:28) [13]

По кр.мере я чувствовал себя вполне комфортно, организовав удал.отладку на связке Хамачи + BRD, в условиях при ширине канала на обоих концах до 1 мбод.
Хамачи при этом хорошо помог: админ сети на удал.стороне встал в неприличную позу, наотрез отказавшись пробрасывать порт доступа к удаленному BRD-сервису


 
KSergey ©   (2010-01-20 11:32) [14]

Из всего исходного поста я так и не понял в чем именно проблема.
И что значит "Но на домашнем компьютере требуется запретить вызов функций работающих с железом"? Не понятно.
Вот есть функция в программе

function RabotaemSGelezom(AParam: Integer): Boolean;
begin
 ...
end;

Что означает "запретить вызов"? Она не должна вызваться из других мест программы? Или при вызове должно взорваться (exception)?

По описанию впечатление, что {IFDEF ...} самое оно, только надо само условие положить в стороне от файлов проекта, чтоыб копировать было удобнее: не приходилось каждый раз перенастраивать дом/работа после копирования.

А секрета раскрывать не надо, пожалуйста. Так интереснее.


 
Skyle ©   (2010-01-20 12:16) [15]


> Сергей М. ©   (20.01.10 10:18) [12]
> > Skyle ©   (20.01.10 10:03) [9]
> Гонять графику без явной на то нужды по меньшей мере неразумно.

Зато если внезапно терминал отвалился - ты ничего не теряешь. Зашёл повторно, всё на месте, все на бряках стоят.


 
Anatoly Podgoretsky ©   (2010-01-20 12:27) [16]

> Германн  (20.01.2010 01:44:00)  [0]

if Можно then зовем функцию, иначе пошли на фиг


 
Германн ©   (2010-01-20 13:13) [17]


> Сергей М. ©   (20.01.10 08:38) [6]

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


 
Германн ©   (2010-01-20 13:23) [18]


> @!!ex ©   (20.01.10 10:13) [11]
>
> > [2] Германн ©   (20.01.10 02:24)
>
> Было бы интересно почему.
>

Потому что я работаю с железом не напрямую. А через довольно сложное ПО от производителя.


 
Германн ©   (2010-01-20 13:24) [19]


> KSergey ©   (20.01.10 11:32) [14]
>
> Из всего исходного поста я так и не понял в чем именно проблема.
>
> И что значит "Но на домашнем компьютере требуется запретить
> вызов функций работающих с железом"? Не понятно.
> Вот есть функция в программе
>
> function RabotaemSGelezom(AParam: Integer): Boolean;
> begin
>  ...
> end;
>
> Что означает "запретить вызов"? Она не должна вызваться
> из других мест программы? Или при вызове должно взорваться
> (exception)?
>
> По описанию впечатление, что {IFDEF ...} самое оно, только
> надо само условие положить в стороне от файлов проекта,
> чтоыб копировать было удобнее: не приходилось каждый раз
> перенастраивать дом/работа после копирования.

Вот это самое то. Вот только не знаю как условие положить в стороне?


 
@!!ex ©   (2010-01-20 13:25) [20]

> [18] Германн ©   (20.01.10 13:23)

Доступ к этому "сложному ПО" осуществляется как?
через dll. делаем врапер, в котором все железчяный вызовы заменяем на:
begin
 //здесь тупо возвращение дефолтного результата
end;

dll помещаем в system32 на домашнем компе.
вызовов к железку на домашнем компе будет возвращать дефолтное значение. Будто железка есть.


 
clickmaker ©   (2010-01-20 13:25) [21]

> Но на домашнем компьютере требуется запретить вызов функций
> работающих с железом

if (ComputerName <> "MyHomeComp") then


 
@!!ex ©   (2010-01-20 13:26) [22]

> Вот это самое то. Вот только не знаю как условие положить
> в стороне?

UseHardware:boolean;

begin
 UseHardware:=FileExists("C:\UseHardware");
end;

function RabotaemSGelezom(AParam: Integer): Boolean;
begin
 if not useHardware then
   Exit;
end;


 
Германн ©   (2010-01-20 13:30) [23]


> clickmaker ©   (20.01.10 13:25) [21]

Как вариант да.


 
Германн ©   (2010-01-20 13:31) [24]


> @!!ex ©   (20.01.10 13:26) [22]
>
> > Вот это самое то. Вот только не знаю как условие положить
> > в стороне?
>
> UseHardware:boolean;
>
> begin
>  UseHardware:=FileExists("C:\UseHardware");
> end;

Тоже вариант.


 
Германн ©   (2010-01-20 13:35) [25]


> Вот только не знаю как условие положить в стороне?
>

Блин. Ясен пень как. {$I C:\defines.inc}
Туплю уже. :(


 
clickmaker ©   (2010-01-20 13:35) [26]

> [23] Германн ©   (20.01.10 13:30)
>
> > clickmaker ©   (20.01.10 13:25) [21]
>
> Как вариант да.

но лучше все-таки условная компиляция.
лишние проверки строк и файлов - они как-то ни к чему в релизе


 
KSergey ©   (2010-01-20 14:08) [27]


> Германн ©   (20.01.10 13:35) [25]
>
> > Вот только не знаю как условие положить в стороне?
> >
>
> Блин. Ясен пень как. {$I C:\defines.inc}

Ура!!! :)
именно это и имел ввиду
Правда c:\ - не красиво, а вот ..\..\includes\defines.inc - самое то.


 
Германн ©   (2010-01-20 14:11) [28]


> KSergey ©   (20.01.10 14:08) [27]
>
>
> > Германн ©   (20.01.10 13:35) [25]
> >
> > > Вот только не знаю как условие положить в стороне?
> > >
> >
> > Блин. Ясен пень как. {$I C:\defines.inc}
>
> Ура!!! :)
> именно это и имел ввиду
> Правда c:\ - не красиво, а вот ..\..\includes\defines.inc
> - самое то.

..\..\includes\defines.inc не удобно. В этом случае файл попадет в архив с исходниками, который таскается с компа на комп.


 
@!!ex ©   (2010-01-20 14:23) [29]

> [28] Германн ©   (20.01.10 14:11)
..\..\includes\defines.inc не удобно. В этом случае файл попадет в архив с исходниками, который таскается с компа на комп.

Значит "..\" должно быть столько, чтобы не попал.


 
Германн ©   (2010-01-21 02:02) [30]


> @!!ex ©   (20.01.10 14:23) [29]
>
> > [28] Германн ©   (20.01.10 14:11)
> ..\..\includes\defines.inc не удобно. В этом случае файл
> попадет в архив с исходниками, который таскается с компа
> на комп.
>
> Значит "..\" должно быть столько, чтобы не попал.

А хрен его знает, где мне придётся положить сей проект в будущем!


 
Игорь Шевченко ©   (2010-01-21 02:21) [31]

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


 
Германн ©   (2010-01-21 02:30) [32]


> Игорь Шевченко ©   (21.01.10 02:21) [31]
>
> Правильные разработчики используют ключи командной строки
> или переменные окружения.

Ключи командной строки сразу отметаем. Они переносятся вместе с проектом.

Переменные окружения. Уже интересно. Что  имеется в виду?


 
Игорь Шевченко ©   (2010-01-21 02:48) [33]

тебе код можно менять ?
или ты таскаешь собранный чужим дядей бинарник, который тебе надо "отлаживать" либо с железом на работе, либо без железа дома ?

http://ln.com.ua/~openxs/articles/smart-questions-ru.html


 
Torry ©   (2010-01-21 08:22) [34]

Кстати, тут начал пользовать www.dropbox.com - даже таскать ничего не нужно, до 2 Гб дискового пространства бесплатно.


 
Anatoly Podgoretsky ©   (2010-01-21 09:51) [35]

> Германн  (21.01.2010 02:30:32)  [32]

Параметры запуска проекта. Задаешь дома свой параметр, в коде анализируешь.


 
KSergey ©   (2010-01-21 10:32) [36]

> Германн ©   (21.01.10 02:02) [30]
> > Значит "..\" должно быть столько, чтобы не попал.
> А хрен его знает, где мне придётся положить сей проект в  будущем!

В каком будущем?! что за бред??


 
oldman ©   (2010-01-21 11:13) [37]


> Естественно, что на домашнем компьютере требуется отладка
> только тех функций, которые не обращаются к железу. Но на
> домашнем компьютере требуется запретить вызов функций работающих
> с железом.


Ну так и отлаживай.
Зачем запрещать то, что можно не трогать?
Или у тебя отладка функции а затрагивает функцию b?


 
Германн ©   (2010-01-21 21:32) [38]


> Anatoly Podgoretsky ©   (21.01.10 09:51) [35]
>
> > Германн  (21.01.2010 02:30:32)  [32]
>
> Параметры запуска проекта. Задаешь дома свой параметр, в
> коде анализируешь.
>

А потом вместе с файлом project.dproj приносишь этот параметр на работу.


 
Anatoly Podgoretsky ©   (2010-01-21 21:45) [39]

> Германн  (21.01.2010 21:32:38)  [38]

А ты не носи этот файл, а в случае ошибки восстановление параметра это же пара секунд.


 
Германн ©   (2010-01-22 01:11) [40]


> Anatoly Podgoretsky ©   (21.01.10 21:45) [39]
>
> > Германн  (21.01.2010 21:32:38)  [38]
>
> А ты не носи этот файл

Ну да. Сначала не носи этот файл, потом носи тот файл и т.д. и т.п.
Вариант [25] меня абсолютно устраивает.
{$IFDEF DEBUG}
{$I C:\defines.inc}
{$ENDIF}



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.062 c
15-1269725402
Юрий
2010-03-28 00:30
2010.08.27
С днем рождения ! 28 марта 2010 воскресенье


15-1265990116
awex
2010-02-12 18:55
2010.08.27
Привет Beeline, или новый развод....


2-1267776768
Константин
2010-03-05 11:12
2010.08.27
Сортировака с помощью TObjectList


15-1266102977
OneYoungMan
2010-02-14 02:16
2010.08.27
Куб рабочего стола


15-1275424180
Юрий
2010-06-02 00:29
2010.08.27
С днем рождения ! 2 июня 2010 среда





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский