Russian AI Cup

Расширенный поиск  
Страницы: [1]

Автор Тема: Немного отладки в C#  (Прочитано 2824 раз)

CyberWo1f

  • Full Member
  • ***
  • Сообщений: 105
Немного отладки в C#
« : Сентября 12, 2014, 12:32:29 pm »

Добрый день!
Я тут решил немного упростить отладку своей стратегии. Так вот, Я хочу, чтобы при запуске моей стратегии, автоматом запускался local-runner. Пытался сделать, чтобы он открывался в моей форме, но тогда не работают кнопки изменения скорости игры, ну да ладно. При закрытии локал ранера, моя стратегия выдает ошибку, так как не прекращает свою работу. Вот хотел бы задать вопрос, где что в попытку занести, или где что прописать, чтобы при закрытии процесса раннера моя стратегия самоуничтожалась?
Записан

cjey

  • Jr. Member
  • **
  • Сообщений: 30
Re: Немного отладки в C#
« Ответ #1 : Сентября 13, 2014, 11:08:50 pm »

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

        private static bool succeed;

        public static void Main(string[] args)
        {
            succeed = false;

#if DEBUG
            while (!succeed)
            {
                try
                {
#endif
                    if (args.Length == 3)
                    {
                        new Runner(args).run();
                    }
                    else
                    {
                        new Runner(new[] { "127.0.0.1", "31001", "0000000000000000" }).run();
                    }
#if DEBUG
                }
                catch (System.Exception e)
                {
                    if (!succeed)
                        System.Threading.Thread.Sleep(500);
//                    if (succeed) throw e;
                }

            }
#endif

        }

        private Runner(string[] args) {
            remoteProcessClient = new RemoteProcessClient(args[0], int.Parse(args[1]));
            succeed = true;
            token = args[2];
        }
Записан

DVS

  • Hero Member
  • *****
  • Сообщений: 689
Re: Немного отладки в C#
« Ответ #2 : Сентября 14, 2014, 12:54:52 am »

попробовал добавить запуск

        public static System.Security.SecureString ReadPassword(string password)
        {
            var secPass = new System.Security.SecureString();
            for (int i = 0; i < password.Length; i++)
                secPass.AppendChar(password[i]);
            return secPass;
        }

        public static void Main(string[] args)
        {
            var dmn = System.Environment.UserDomainName;
            System.Diagnostics.Process.Start(@"..\..\..\__local-runner/local-runner.bat"
            , "stob", ReadPassword("drt564fg"), dmn);
....

кто нибуть подскажет почему не запускается, хотя ни каких ошибок нет?
Записан

TallerDerdan

  • Newbie
  • *
  • Сообщений: 1
Re: Немного отладки в C#
« Ответ #3 : Сентября 14, 2014, 02:29:40 am »

попробовал добавить запуск

        public static System.Security.SecureString ReadPassword(string password)
        {
            var secPass = new System.Security.SecureString();
            for (int i = 0; i < password.Length; i++)
                secPass.AppendChar(password[i]);
            return secPass;
        }

        public static void Main(string[] args)
        {
            var dmn = System.Environment.UserDomainName;
            System.Diagnostics.Process.Start(@"..\..\..\__local-runner/local-runner.bat"
            , "stob", ReadPassword("drt564fg"), dmn);
....

кто нибуть подскажет почему не запускается, хотя ни каких ошибок нет?


Process.Start(@"C:\путь\до\файла\javaw.exe", "-cp \".;*;%~dp0/*\" -jar \"local-runner.jar\" local-runner.properties");Исполняемый файл находит в каталоге local-runner.

« Последнее редактирование: Сентября 14, 2014, 02:32:25 am от TallerDerdan »
Записан

Evgest

  • Newbie
  • *
  • Сообщений: 1
Re: Немного отладки в C#
« Ответ #4 : Сентября 15, 2014, 12:11:49 am »

Я добавил это в PreBuild-триггер в свойствах проекта. В батнике прописал абсолютный путь до properties и наслаждаюсь жизнью.

powershell start-process  C:\Fun\local-runner\local-runner.bat
Записан

CyberWo1f

  • Full Member
  • ***
  • Сообщений: 105
Re: Немного отладки в C#
« Ответ #5 : Сентября 15, 2014, 01:42:46 pm »

Да, запуск локал-ранера, как я писал выше, я уже делал =) меня больше интересует окончание отладки по закрытию локал-раннера. Если кто делал, конечно =)
Записан

cjey

  • Jr. Member
  • **
  • Сообщений: 30
Re: Немного отладки в C#
« Ответ #6 : Сентября 15, 2014, 02:15:42 pm »

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

jenyanorilsk

  • Jr. Member
  • **
  • Сообщений: 12
Re: Немного отладки в C#
« Ответ #7 : Сентября 15, 2014, 03:54:24 pm »

накидал на такую штуку - http://pastebin.com/hL6sihad
штука позволяет прогнать нужное количество игр со смартгаем (метод quick) или своей предыдущей версией (метод local)

Константы:
RESULT - путь к TXT файлу с результатом игры
SEEDS_FILE - путь к TXT файлу, куда записываются сиды. При повторном запуске сиды будут браться из этого файла
SOLUTION - путь к текущей стратегии
SOLUTION_OLD - путь к предыдущей стратегии (используется в методе local())

Помимо этого, нужно создать в папке локалраннера файл "local-runner-multy.properties", в котором нужно выставить false для render-to-screen и render-to-screen-sync для стравливания стратегии со смартгаем
И нужно создать local-runner-local.properties - http://pastebin.com/H663zBKC для запуска стравливания своих стратегий

код строго не судите - накидано за 2 минуты и вылизывать не вижу смысла
Записан

CyberWo1f

  • Full Member
  • ***
  • Сообщений: 105
Re: Немного отладки в C#
« Ответ #8 : Сентября 15, 2014, 04:21:31 pm »

Эх, надеюсь хоть на футболку то накодю =) А то что то даже времени нет стратегию написать толком =(

2cjey Проблема моя скорее не проблема, а так, неудобство =) просто при закрытии локал раннера при работающей стратегии, оно некоторое время думает, и студия выдает типа ошибки, указываю на строку кода, типа чего то не хватает =) Ну вот я и хотел, чтобы при закрытии локал раннера оно не выпадало. Конечно, можно и так, но я все равно пока на начальной стадии изучения C#, в прошлом году на пайтоне писал (сам то я 1Сник), в этом решил, что на С# буду.
Записан

steleal

  • Full Member
  • ***
  • Сообщений: 96
Re: Немного отладки в C#
« Ответ #9 : Сентября 15, 2014, 04:38:06 pm »

я на батниках сделал тестирование. Запуск скомпилированных java.
Одна игра отыгрывает примерно за 8 сек, в два потока - 14 игр в минуту, за 20 минут 300 игр отыгрывается. Отыгрываю 100 игр последней версии с первой версией, и, если все нормально, 300 игр последней с предпоследней. Этого, имхо, достаточно, чтобы выяснить изменение силы стратегии с точностью до  +-2%.
Записан

CyberWo1f

  • Full Member
  • ***
  • Сообщений: 105
Re: Немного отладки в C#
« Ответ #10 : Сентября 15, 2014, 04:55:40 pm »

По сабжу, решил свою проблему в этом месте : в Файле Runner.cs
        public void run() {
            try
            {
                remoteProcessClient.WriteTokenMessage(token);
                ...
            }
            catch {}
            finally
            {
                remoteProcessClient.Close();
            }
[/]

Добавил Catch, и моя проблемка решилась. Всем спасибо. Особенно jenyanorilsk, разобрался с вашим творением =) Теперь можно многократно тестить страты, Спасибо большое!!!
Записан
Страницы: [1]