Вывод ошибок в файл

Тема в разделе "WASM.BEGINNERS", создана пользователем ciril, 18 июн 2008.

  1. ciril

    ciril New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    29
    Файл компилируется FASM'ом.
    Строки в bat'е:

    @ECHO ON
    C:\FASM\FASM.EXE MY.ASM >> ERR.TXT

    В случае ошибок в файл выводится только:
    flat assembler version 1.67.26 (1105997 kilobytes memory)

    Подскажите, пожалуйста, что в bat-файле написать, чтобы ошибки компиляции выводились в файл.
     
  2. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    ciril
    Внеси ошибку в текст MY.ASM (ссылка на несуществующую переменную или вместо mov набери mob) и номер строки с ошибкой и типом ошибки появится в ERR.TXT
     
  3. ciril

    ciril New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    29
    Вносил, не появляется, причем с PAUSE на консоли ошибки видны.
    FASM заканчивает с ERRORLEVEL 2, но в файл выводит только flat asse...
     
  4. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    ciril
    Попробуй
    C:\FASM\FASM.EXE MY.ASM
    if errorlevel neq 0 >> err.txt
     
  5. ciril

    ciril New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    29
    Так вообще в файл ничего не выводит, а в при такой форме:
    ...
    @IF ERRORLEVEL 2 GOTO ERR2
    ...
    :ERR2
    @ECHO ERR2
    @PAUSE
    >> ERR.TXT
    EXIT

    строку fasm... в файл все-таки выводит.
    При каких-нибудь неправильных аргументах, типа:
    ...
    C:\FASM\FASM.EXE MY.ASM IN ERR.TXT
    ...
    на консоли справка по формату запуска FASM'а с консоли, а файл даже не создается.
    Похоже он просто отказывается что-либо выводить с момента возникновения ошибки выполнения программы.
     
  6. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Регистрация:
    8 окт 2006
    Сообщения:
    581
    Адрес:
    МО
    Видимо ошибки выводятся функцией без возможности перенаправления (stderr в Ц\ЦПП). В этом случае можно только переписать FASM. Можно почитать справку - возможно у него есть опции или директивы указывающие, как выводить сообщения.
     
  7. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    1.67.21
    Код (Text):
    1. @ECHO OFF
    2. fasm.exe test.asm >> log.txt
    log.txt:
    Код (Text):
    1. flat assembler  version 1.67.21  (1134974 kilobytes memory)
    2. test.asm [12]:
    3.     int4
    4. error: illegal instruction.
     
  8. ciril

    ciril New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    29
    При
    fasm.exe test.asm >> log.txt
    в log все та же строка flat...

    Вот такой bat:
    @ECHO ON
    @C:\ASSEMBLER_PROG\FASM\FASM.EXE MY.ASM 2>>ERR.TXT

    выводит в файл только ошибки, но при этом строка flat... на экране.
    А так, чтобы поток вывода не только перенаправлялся, но еще и дублировался, можно сделать?
    По справке ntcmds.chm
    @C:\ASSEMBLER_PROG\FASM\FASM.EXE MY.ASM 2>>ERR.TXT 1<&2
    должно работать, нет, тоже разделение, до и после возникновения ощибки.
     
  9. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    Так попробуй
    fasm.exe my.asm my.exe > err.txt
     
  10. ciril

    ciril New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    29
    Тот же результат.
    Из справки:
    STDIN 0 Ввод с клавиатуры
    STDOUT 1 Вывод в окно командной строки
    STDERR 2 Ошибка вывода в окно командной строки
    UNDEFINED 3-9 Эти дескрипторы определяются индивидуально для каждой прикладной программы.
    Возможно разделить и перенаправить эти потоки, то есть 2>ERR.TXT, тогда будет только в файл, на консоль выйдет только 1й дескриптор, но продублировать их не получается. Вот в чем загвоздка: можно ли вообще их дублировать в Win?
     
  11. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Код (Text):
    1. command arguments > outfile.txt 2>&1
    ?
     
  12. ciril

    ciril New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    29
    Не-а.
    При:
    @TIME /T
    @C:\FASM\FASM.EXE MY.ASM >ERR.TXT 2>&1
    @PAUSE

    В ERR.TXT:
    flat assembler version 1.67.26 (1225551 kilobytes memory)
    JMPPM.ASM [48]:
    mov cr0,eaxd
    error: invalid operand.
    На консоли:
    09:24
    Press any key to continue...

    А при:
    @TIME /T
    @C:\FASM\FASM.EXE MY.ASM >ERR.TXT 3>&1
    @PAUSE

    В ERR.TXT:
    flat assembler version 1.67.26 (1226335 kilobytes memory)
    Press any key to continue . . .
    На консоли:
    09:24
    JMPPM.ASM [48]:
    mov cr0,eaxd
    error: invalid operand.

    При:
    ... 3>&1 >ERR.TXT ...
    или
    ...2>&1 >ERR.TXT ...

    В ERR.TXT:
    flat assembler version 1.67.26 (1226335 kilobytes memory)
    На консоли:
    09:24
    JMPPM.ASM [48]:
    mov cr0,eaxd
    error: invalid operand.
    Press any key to continue . . .
     
  13. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    А.. сори попутал. Насчет дублировть не знаю. Походу низя