shoorick: (Рыжий)
[personal profile] shoorick
В перловых скриптах (во всяком случае, в тех, что запущены в юниксоподобных системах) определить, запущены ли они из-под отладчика, достаточно просто — надо проверить, существует ли переменная окружения PERLDB_PIDS:
my $DEBUG = exists $ENV{'PERLDB_PIDS'};

Однако в отладчике, встроенном в Komodo IDE 8.5, такой способ не работает — вместо PERLDB_PIDS устанавливается другая переменная PERL5DB со значением, например, BEGIN require '/opt/komodo/lib/support/dbgp/perllib/perl5db.pl' . А в штатном отладчике переменной PERL5DB нет. Значит, надо проверять обе:
my  $DEBUG
    =  exists $ENV{'PERLDB_PIDS'}
    || exists $ENV{'PERL5DB'};

http://shoorick.ru/2014/11/19/how-to-detect-perl-debugger/

upd/20.11.2014: Всё проще — существует переменная $^P

Date: 2014-11-19 12:51 pm (UTC)
ext_659893: Sapa (Default)
From: [identity profile] sappa.livejournal.com
perldoc perlvars
$PERLDB
$^P

The internal variable for debugging support. The meanings of
the various bits are subject to change, but currently indicate:
....


Т.е. просто: if ($^P) { # DEBUGGER DETECTED!

P.S. А как это у тебя переменные окружения попадают в глобальные переменные? Модуль Env поди подключаешь? Потому как иначе переменные окружения видны как элементы глобального хэша %ENV.

P. S. Не попадают

Date: 2014-11-20 08:32 am (UTC)
From: [identity profile] shoorick.livejournal.com
Они в %ENV сидят, никуда не ходят. Просто я их написал так, коротко.

Ой

Date: 2014-11-20 08:37 am (UTC)
From: [identity profile] shoorick.livejournal.com
И правда, работает... Везде.

Надо бы man perlvar перечитать...

Profile

shoorick: (Default)
shoorick

December 2016

S M T W T F S
    1 23
45678910
11121314151617
18 19 2021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 21st, 2026 01:31 am
Powered by Dreamwidth Studios