2016-10-25 31 views
8

Mam codebase gdzie mam sporoignoruj ​​debugger; oświadczenia node.js, podczas debugowania sesji

debugger; 

wypowiedzi. Czasami debuguję, a właściwie chcę po prostu pominąć cały debugger; i kontynuuj tylko ręcznie ustawione punkty przerwania, które wybrałem dla sesji debugowania, czy jest jakieś ustawienie przypadkowe w Node.js, aby to zrobić?

Innymi słowy, chciałbym uważać oświadczenia debugger; za długoterminowe zastępcze, ale dla niektórych sesji debugowania chciałbym zignorować te długoterminowe symbole zastępcze.

Odpowiedz

6

Można to zrobić za pomocą devtools chrome.

można zrobić:

node --inspect --debug-brk index.js 

że będzie generować coś takiego:

chrome-devtools://devtools/remote/serve_file/@60cd6e859b9f557d2312f5bf532f6aec5f284980/inspector.html?experiments=true&v8only=true&ws=localhost:9229/9c2e4f37-4c3a-4477-b8da-2399c5d9819e 

wystarczy skopiować i wkleić że na chrom.

Istnieje możliwość wyłączenia/włączenia wszystkich punktów przerwania, a chrome zapamięta wszystkie ustawione wcześniej punkty przerwania.

Proszę sprawdzić: --inspect, aby uzyskać więcej informacji.

+0

Chrome nie pozwoli ci wyłączyć tylko '' debugger'? Tylko punkty przerw wszystkie razem, niezależnie od pochodzenia. –

3

Szybki i brudny sposób (jej do debugowania tak naprawdę jest w porządku) jest trzymać coś takiego poniższego skryptu w skryptach/debugger.js

require.extensions['.js'] = function(module, filename) { 
    var content = fs.readFileSync(filename, 'utf8').replace(/debugger/g, [ 
    '(function() {', 
    ' if (__debugger) {', 
    ' debugger;', 
    ' }', 
    '})', 
    ].join('\n')); 

    module._compile(content, filename); 
}; 

następnie uruchomić węzeł z node -r ./scripts/debugger

Tutaj użyj zmiennej globalnej, aby można ją było włączyć/wyłączyć z repliki debuggera lub repliki chrome, jeśli debugowanie odbywa się za pomocą --inspect.

Technicznie require.extensions jest przestarzałe, ale nie zostanie usunięte i działa zgodnie z założeniami.