Помимо уже упомянутых...
Используя эти for..in
конструкция для итерации по массивам
(выполняет итерации по методам массива И индексам)
Используя JavaScript, встроенный как <body onload="doThis();">
(негибкий и предотвращает несколько слушателей события)
Используя 'Функцию ()' конструктор
(плохо по тем же причинам eval()
плохо)
Передающие строки вместо функций к setTimeout
или setInterval
(также использование eval()
внутренне)
Доверие неявным операторам, не используя точки с запятой
(дурная привычка взять, и может привести к неожиданному поведению)
Используя/*.. */для блокирования строк кода
(может вмешаться в regex литералы, например: /* /.*/ */
)
< evangelism> И конечно, не используя Прототип;) </evangelism>
Начиная с gdb 7.0, существует обратимая отладка , поэтому ваши новые любимые команды:
* reverse-continue ('rc') -- Continue program being debugged but run it in reverse
* reverse-finish -- Execute backward until just before the selected stack frame is called
* reverse-next ('rn') -- Step program backward, proceeding through subroutine calls.
* reverse-nexti ('rni') -- Step backward one instruction, but proceed through called subroutines.
* reverse-step ('rs') -- Step program backward until it reaches the beginning of a previous source line
* reverse-stepi -- Step backward exactly one instruction
* set exec-direction (forward/reverse) -- Set direction of execution.
thread apply all bt
or thread apply all print $pc
: For finding out quickly what all threads are doing.
Запустить GDB с текстовым пользовательским интерфейсом
gdb -tui
Вместо запуска GDB с параметром «-tui» вы также можете через некоторое время переключиться в текстовый режим, набрав «wh».
информационных потоков , чтобы перечислить все активные потоки, и f (#) -> # номер потока, на который вы хотите переключиться
иногда я использую gdb для преобразования из шестнадцатеричного в десятичное или двоичное, это очень удобно вместо открытия калькулятора
сценарий gdb - хороший трюк, кроме того, что мне нравится включить / выключить блокировку планировщика, чтобы предотвратить запуск других потоков, когда вы входите в один.
Использование параметра -command = <файл с командами gdb>
при запуске gdb. То же, что -x <командный файл>
. Этот командный файл может содержать команды gdb, такие как точки останова, параметры и т. Д. Полезно в случае, если конкретный исполняемый файл необходимо подвергнуть последовательным запускам отладки с использованием gdb.
Это может быть полезно, я уверен, что это может быть улучшено, однако, помогите приветствовать:
define mallocinfo
set $__f = fopen("/dev/tty", "w")
call malloc_info(0, $__f)
call fclose($__f)