Tag: gdb

与gdb交互工作意外

我只是试图控制gdb, 玩具是gdb的前端。 来自这个答案的代码:在我的fedora系统上使用python3完美地工作。 但由于某种原因不适用于gdb。 这工作: var child = require('child_process'); var ps = child.spawn('python', ['-i']); ps.stdout.pipe(process.stdout); ps.stdin.write('1+1'); ps.stdin.end(); 这不起作用: var child = require('child_process'); var ps = child.spawn("gdb", ['gdb-test', '-q']); ps.stdout.pipe(process.stdout); ps.stdin.write('start'); 问题: (1)它打印到标准输出: 从gdb-test读取符号…从gdb-test …读取符号完成。 所以出于某种原因,就好像命令运行了两次。 (2)最重要的是, 启动命令并没有送入gdb,也没有在main里面放置断点。 例如:如果我手动内部运行, 开始将导致: “临时断点1,main()在gdb-test.c:5” gdb-test是这样编译的代码: //gdb-test.c: #include<stdio.h> int main() { int i = 10; i++; printf("%d\n"); } 我知道gdb有一个-tty选项,我不知道如何设置一个tty甚至应该工作,这里的任何线索也将受到欢迎,或设置一个tty和gdb的机器接口交互的线索。

nodejs + aerospike崩溃

我从错误中获得以下回溯,只有在对服务器的一些后续请求之后才会发生: node: ../deps/uv/src/unix/core.c:171: uv__finish_close: Assertion `handle->flags & UV_CLOSING' failed. Program received signal SIGABRT, Aborted. 0x00000030eee32925 in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 64 return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig); (gdb) backtrace #0 0x00000030eee32925 in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 #1 0x00000030eee34105 in abort () at abort.c:92 #2 0x00000030eee2ba4e in __assert_fail_base (fmt=<value optimized out>, assertion=0xb37538 "handle->flags & UV_CLOSING", […]

用io.js和gdbdebugging无限循环

我有一个应用程序出去抓取一堆url。 有时会随机locking100%的CPU使用率。 无论发生什么事情,它都处于一种从未返回事件循环的状态,因为我无法用node-inspector做任何事情,我的logstash事件停止被触发,strace显示我没有进一步的系统调用等。 我希望能够joinGDB,看看能否以这种方式获得某种洞察力。 我发现了Remy Sharp的一篇文章,他可以在这里用node来做到这一点: https : //remysharp.com/2013/09/11/how-i-fixed-an-anonymous-infinite-loop-in-jsbin 。 不幸的是,io.js使用的更新的V8发生了变化。 我发现,当我跟着他的例子,我卡住了他运行print 'v8::V8::TerminateExecution'(0) 。 V8显然从API中删除了TerminateExecution函数(请参阅https://stackoverflow.com/a/19408894/918195 )。 对GDB没有经验我偶然尝试调用v8::V8::TerminateExecution(v8::Isolate*) ,在那篇文章中提到无济于事。 在这一点上,我觉得我将不得不深入挖掘V8源代码中的兔子洞,以便了解如何使用GDB来解决这个问题。 如果可能,我希望避免这种情况。 任何关于如何使用GDB与io.js或另一种方式来寻找导致我的进程挂在100%的CPU的代码(我猜一些无限循环条件 – 可能在第三方库中我是使用)?

nodejs,如何使用GDB进行debugging

在谷歌search后,我发现下面的方式做nodejs应用gdb,build立节点./configure –debug选项,然后做 gdb –args ~/node_g start.js 使用这个我试图debugging一个小程序,但是在设置了断点后,我不能看到它正在打破这个function, 我的简单程序gdb_node.js看起来像这样: function abc() { console.log("In abc"); } function bcd() { abc(); console.log("Done abc"); } bcd(); 现在我正在发行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 […]