Я не до конца понимаю ваш вопрос, но все опции для 'b' в отладчике perl можно просмотреть с помощью 'h b':
DB<3> h b
b Sets breakpoint on current line)
b [line] [condition]
Set breakpoint; line defaults to the current execution line;
condition breaks if it evaluates to true, defaults to '1'.
b subname [condition]
Set breakpoint at first line of subroutine.
b $var Set breakpoint at first line of subroutine referenced by $var.
b load filename Set breakpoint on 'require'ing the given file.
b postpone subname [condition]
Set breakpoint at first line of subroutine after
it is compiled.
b compile subname
Stop after the subroutine is compiled.
Кажется, не существует шаблона «одно использование для всех случаев». По моему опыту вы можете:
- покажите несколько отладчиков до тех пор, пока интересующие вас модули не загрузятся
- «используйте» модуль, для которого вы хотите установить точку останова в
После загрузки интересующего вас модуля вы можете использовать шаблон 'b [subname]'. Не забывайте, что вам может понадобиться полностью указать под-имя с именем пакета:
DB<5> use JSON;
DB<6> b JSON::import
DB<7> JSON->import
JSON::import(/opt/xt/xt-perl/lib/site_perl/5.12.4/JSON.pm:78):
78: my $pkg = shift;
auto(-1) DB<<8>> v
75
76
77 sub import {
78==>b my $pkg = shift;
79: my @what_to_export;
80: my $no_export;
81
82: for my $tag (@_) {
83: if ($tag eq '-support_by_pp') {
84: if (!$_ALLOW_UNSUPPORTED++) {
Вы могли бы также
- добавить "$ DB :: single = 1;" в исходном коде (не забудьте удалить его, когда закончите!)
и просто "c", чтобы продолжить через отладчик, пока вы не добавите эту строку в свой код. Необходимость добавлять и удалять специальные маркеры в вашем источнике противоречит общему принципу отладки, но иногда это полезный способ легко остановиться в труднодоступном или медленном темпе, чтобы пройти через отладчик.