2013-05-13 11 views
6

Po wyszukaniu w google, znalazłem poniższy sposób to zrobić gdb na nodejs aplikacji gromadzeniu węzeł ./configure z opcją --debug a następnie zrobićnodejs, jak to zrobić debugowania za pomocą GDB

gdb --args ~/node_g start.js 

Używanie to usiłuję debugować mały program, ale po ustawieniu punktu przerwania, nie jestem w stanie zobaczyć, że łamie w tej funkcji,

mój prosty gdb_node.js programu wygląda następująco:

function abc() { 
    console.log("In abc"); 
} 

function bcd() { 
    abc(); 
    console.log("Done abc"); 
} 

bcd(); 

Teraz wysyłam gdb:

(gdb) b bcd 
Function "bcd" not defined. 
Make breakpoint pending on future shared library load? (y or [n]) y 
Breakpoint 1 (bcd) pending. 
(gdb) run 
Starting program: /Users/mayukh/node_g gdb_node.js 
Reading symbols for shared libraries 

++++ ............................... .................................................. .................................................. ...... zrobione

In abc 
Done abc 

Program exited normally. 
(gdb) 

Czy ktoś może mi powiedzieć, czego tu brakuje?

Pozdrawiam, -M-

Odpowiedz

8

gdb próbuje odnośnika bcd symbol informacje debugowania generowane z C++ źródła. Wygląda na to, że faktycznie chcesz debugować javascript, a nie C++.

V8 posiada wbudowany debugger, a node.js ma client dla debuggera protocol

Aby rozpocząć node.js z klientem debuggera dołączone do programu:

node debug test.js 

Można ustawić punkty przerwania za pomocą debuggera commands:

sh-3.2$ node debug test.js 
< debugger listening on port 5858 
connecting... ok 
break in test.js:10 
    8 } 
    9 
10 bcd(); 
11 
12 }); 
debug> sb(6) 
    5 function bcd() { 
* 6 abc(); 
    7 console.log("Done abc"); 
    8 } 
    9 
10 bcd(); 
11 
12 }); 
debug> 

Albo użyć debugger kluczowe:

function abc() { 
    console.log("In abc"); 
} 

function bcd() { 
    debugger; 
    abc(); 
    console.log("Done abc"); 
} 

bcd(); 

=

sh-3.2$ node debug test.js 
< debugger listening on port 5858 
connecting... ok 
break in test.js:11 
    9 } 
10 
11 bcd(); 
12 
13 }); 
debug> c 
break in test.js:6 
    4 
    5 function bcd() { 
    6 debugger; 
    7 abc(); 
    8 console.log("Done abc"); 
debug> 

Istnieje GUI dla klientów V8 debugger, a także: node-webkit-agent, node-inspector, eclipse i inne

+0

Węzeł v8 zaleca stosowanie 'węzeł inspect' zamiast' węzła debug' – morhook

Powiązane problemy