Если я хочу расширить встроенный псевдоним (скажем, 'b'), мне понадобится реализация по умолчанию.LLDB Где встроенные псевдонимы
Где я могу найти это? Я бы предположил, что они будут где-то на диске, но я нигде не смог его найти.
Если я хочу расширить встроенный псевдоним (скажем, 'b'), мне понадобится реализация по умолчанию.LLDB Где встроенные псевдонимы
Где я могу найти это? Я бы предположил, что они будут где-то на диске, но я нигде не смог его найти.
Если вы наберете help -a
в LLDB подскажет вы увидите встроенные псевдонимы в список:
b -- ('_regexp-break') Set a breakpoint using a regular expression to specify the location, where <linenum> is in decimal and <address> is in hex.
Это псевдоним для регулярных выражений команды, которая является одной из форм команд LLDB, который пытается соответствовать его входу против одно или несколько регулярных выражений и выполняет расширение, которое зависит от этого соответствия.
Например _regexp_break
, который является то, что вы заботитесь о:
_regexp-break -- Set a breakpoint using a regular expression to specify the location, where <linenum> is in decimal and <address> is in hex.
Я не думаю, что LLDB в настоящее время имеет возможность увидеть «содержимое» команд регулярного выражения, но так как он является открытым исходным кодом проект, вы можете понять это, глядя на источники:
const char *break_regexes[][2] = {{"^(.*[^[:space:]])[[:space:]]*:[[:space:]]*([[:digit:]]+)[[:space:]]*$", "breakpoint set --file '%1' --line %2"},
{"^([[:digit:]]+)[[:space:]]*$", "breakpoint set --line %1"},
{"^\\*?(0x[[:xdigit:]]+)[[:space:]]*$", "breakpoint set --address %1"},
{"^[\"']?([-+]?\\[.*\\])[\"']?[[:space:]]*$", "breakpoint set --name '%1'"},
{"^(-.*)$", "breakpoint set %1"},
{"^(.*[^[:space:]])`(.*[^[:space:]])[[:space:]]*$", "breakpoint set --name '%2' --shlib '%1'"},
{"^\\&(.*[^[:space:]])[[:space:]]*$", "breakpoint set --name '%1' --skip-prologue=0"},
{"^(.*[^[:space:]])[[:space:]]*$", "breakpoint set --name '%1'"}};
Это массив строковых пар, и каждая пара определяет регулярное выражение и соответствующее расширение, на матче. (для справки, этот код находится в lldb/source/Interpreter/CommandInterpreter.cpp
)
Если вы в конечном итоге определяете свои собственные, и вам нравится так, что вы хотите, чтобы он всегда был доступен, вы можете «сворачивать свои собственные» на каждом сеансе, команда в ~/.lldbinit
.