что делает `handle SIG33 pass nostop noprint` при использовании в gdb

Погуглив еще, я нашел этот вопрос: Изменить заголовок в огромном файле, не перезаписывая весь файл.

Чтобы избежать перезаписи всего файла при добавлении в заголовок, я напечатал фиктивный заголовок минимального количества байтов (дополняя нулями) при создании файла:

awk 'NR==1{print "dummyhead100\tdummyhead20000"; next} $3==1 {print 
$1"\t"$2}' input > output

Затем я создаю файл (или строку переменная) с новым заголовком в качестве header.tsv и замените фиктивный заголовок на месте (убедившись, что фиктивный и новый заголовки имеют одинаковое количество байтов), используя dd:

dd conv=notrunc obs=1 if=header.tsv of=output

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

0
16.07.2017, 20:25
1 ответ
handle SIG33

сообщает gdb, как обрабатывать сигнал 33; в версии, которую вы даете, passозначает передачу сигнала, nostopговорит отладчику не останавливаться при испускании сигнала и noprintничего не печатать.

Директивы такого типа полезны при отладке сред выполнения, которые используют внутренние сигналы. Сигнал 33 используется на Android компанией Bionic (для обратной -трассировки ); если вы не будете игнорировать это там, вы в конечном итоге будете останавливаться все время. Вы увидите аналогичные инструкции для Flash (с сигналами 32 и 33 как минимум, IIRC ).

3
28.01.2020, 02:25

Теги

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