Как определить, является ли бинарный файл релизом или отладкой в ​​win и * nix

Запустите java-банку из планировщика заданий (Windows 7 Professional 64 бит)

Я буду настраивать его каждые 5 минут.

Шаг 1, установите java, убедитесь, что он доступен из командной строки

. Вы можете запустить java-банку из командной строки baremd. Укажите полный каталог java следующим образом: (Это команда, которую я использовал)

C:\ProgramData\Oracle\Java\javapath\java.exe -jar C:\repo\curium.jar

Шаг 2, Открыть планировщик задач:

В строке поиска меню «Пуск» найдите «" планировщик "и" Планировщик заданий ". Он заложен в панели управления: Панель управления -> Система и безопасность -> Административные средства -> Планировщик заданий.

Шаг 3, выполните новую запланированную задачу:

Слева , щелкните правой кнопкой мыши «Библиотека планировщика заданий». Выберите «Новая основная задача». Дайте ему имя.

Выберите следующий. Нажмите «Ежедневно», (конфигурация для повторного запуска каждую минуту будет выполнена позже).

Выберите следующий. Повторять каждые 1 день. Попросите его начать через 5 минут. выберите следующий. Нажмите «Запустить программу».

Шаг 4, настройте свой java для запуска:

В поле «Программа / сценарий» поместите полный путь к вашей java, ваш путь может быть другим. Двойная проверка с помощью команды cmd where java

C:\ProgramData\Oracle\Java\javapath\java.exe

В поле «Добавить аргументы» поставьте это:

-jar C:\repo\curium.jar

Нажмите «Далее», нажмите «Готово».

Шаг 5, щелкните правой кнопкой мыши новую задачу для дальнейшей настройки:

Щелкните правой кнопкой мыши свой элемент -> Свойства.

Выберите пузырь: «Запустить, был ли пользователь зарегистрирован или нет»

На вкладке «триггеры». Выберите ежедневную задачу и выберите «Редактировать».

Шаг 6, настройте триггеры повторной задачи

Начните задачу: «По расписанию».

Выберите «Повторить» задача каждый: «5 минут». Установите флажок enabled. Нажмите ОК. Сохранить.

Вам будет предложено ввести имя пользователя и пароль для Windows. Добавьте и нажмите OK.

Шаг 7, убедитесь, что он работает

Подождите 5 минут для его запуска. Или запустите его, щелкнув правой кнопкой мыши -> Выполнить.

Щелкните правой кнопкой мыши свою задачу, выберите свойства. Выберите вкладку «История».

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

Шаг 8, см., если он выживет при перезагрузке

Перезагрузите компьютер и убедитесь, что он включен. Если это так, вы сделали.

32
задан 30 April 2009 в 17:23
поделиться

5 ответов

В linux вы можете использовать команду "file" даже для динамических библиотек. Если он говорит «раздет», то все символы отладки удаляются. Если он говорит «не раздетый», это противоположность

17
ответ дан 27 November 2019 в 20:42
поделиться

Для unix: с исполняемыми файлами ELF вы можете использовать objdump или nm для просмотра таблиц символов для исполняемого файла ( обратите внимание, что это будет работать намного лучше, если оно не будет удалено). Наличие или отсутствие определенных символов будет указывать на отладку или выпуск сборки. (Что касается того, что, вероятно, зависит от того, какие библиотеки вы используете, и т. Д. Вам нужно будет немного покопаться, чтобы найти общие; не стесняйтесь предлагать что-то искать в комментариях, и я обновлю ответ.)

Для Windows: предложения по работе с зависимостями хороши. Для эквивалентов командной строки вы можете найти dumpbin в большинстве установок Visual Studio, и это в некоторой степени эквивалентно objdump в * nix. Вы также можете найти nm или objdump, например, в

3
ответ дан 27 November 2019 в 20:42
поделиться

Для Windows у Dependency Walker есть дополнительный вывод строки cmd, в котором перечисляются все dll загружаемые файлы (и их зависимости). Запустите его через grep и посмотрите, появляется ли msvcrt-dll с объявлением или нет.

Это работает, только если оно динамически связано. В противном случае это может быть сложнее.

Возможно, вы можете выполнить grep для определенных функций, которые отличаются в отладке / выпуске, , если эти строки видны в исполняемом файле.

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

3
ответ дан 27 November 2019 в 20:42
поделиться

Там не так много, чтобы продолжить. Если вы откроете сборку в Reflector, вы можете найти атрибут сборки:

[assembly: Debuggable(DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.EnableEditAndContinue | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.Default)]

Но, очевидно, он добавлен и в режим выпуска.

Если это ваша собственная сборка, то решение состоит в том, чтобы использовать некоторые директивы препроцессора.

#ifdef DEBUG
[MyAttribute("foo")]
#endif

Редактировать: Извините, я предположил .NET. Вот идет мой молоток.

2
ответ дан 27 November 2019 в 20:42
поделиться

Чаще всего отладочные версии как исполняемых файлов, так и библиотек связаны с отладочной версией среды выполнения. В Windows есть схема имен для версий отладки / выпуска, которые некоторые придерживаются, в том числе MS. Имя отладочной версии библиотеки должно заканчиваться на d. Вы можете использовать такой инструмент, как Dependency Walker ( http://www.dependencywalker.com ), чтобы увидеть, от каких библиотек зависит ваш исполняемый файл или библиотека. Если вы найдете отладочные версии библиотек времени выполнения, существует большая вероятность того, что ваш исполняемый файл или библиотека были собраны в режиме отладки.

Это, однако, работает, только если

  • вы можете сказать, посмотрев на имя время выполнения, какая версия (это следует некоторой схеме именования, такой как один я описал выше)
  • ваш исполняемый файл / библиотека связаны против динамического времени выполнения не статично один. Во втором случае время выполнения втягивается в исполняемый файл / библиотеку и это больше не является зависимостью
  • вы находитесь в Windows:)
2
ответ дан 27 November 2019 в 20:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: