问候,为了节省您的时间,这个错误已在v0.4.5中修复 我今天在安装node.js时遇到了一个相当奇怪的问题,并通过邮件存档进行了筛选,但却无法解决它!所以我把问题发布到了nodejs here
只是提醒我从wscript改变了snapshot='snapshot=on'
节点到snapshot=''
。
我这样做是因为在这之前我遇到了以下情况
make期间出错:
scons: *** [obj/release/snapshot.cc] Error -11
现在我要遵循的步骤。
*以root身份登录
---开始配置
adil-X:/usr/local/nodejs/node-v0.4.2 # ./configure --prefix=/usr/local/nodejs
Checking for program g++ or c++ : /usr/bin/g++
Checking for program cpp : /usr/bin/cpp
Checking for program ar : /usr/bin/ar
Checking for program ranlib : /usr/bin/ranlib
Checking for g++ : ok
Checking for program gcc or cc : /usr/bin/gcc
Checking for program ar : /usr/bin/ar
Checking for program ranlib : /usr/bin/ranlib
Checking for gcc : ok
Checking for library dl : yes
Checking for openssl : yes
Checking for library util : yes
Checking for library rt : yes
--- libeio ---
Checking for library pthread : yes
Checking for function pthread_create : yes
Checking for function pthread_atfork : yes
Checking for futimes(2) : yes
Checking for readahead(2) : yes
Checking for fdatasync(2) : yes
Checking for pread(2) and pwrite(2) : yes
Checking for sendfile(2) : yes
Checking for sync_file_range(2) : yes
--- libev ---
Checking for header sys/inotify.h : yes
Checking for function inotify_init : yes
Checking for header sys/epoll.h : yes
Checking for function epoll_ctl : yes
Checking for header port.h : not found
Checking for header poll.h : yes
Checking for function poll : yes
Checking for header sys/event.h : not found
Checking for header sys/queue.h : yes
Checking for function kqueue : not found
Checking for header sys/select.h : yes
Checking for function select : yes
Checking for header sys/eventfd.h : yes
Checking for function eventfd : yes
Checking for SYS_clock_gettime : yes
Checking for library rt : yes
Checking for function clock_gettime : yes
Checking for function nanosleep : yes
Checking for function ceil : yes
Checking for fdatasync(2) with c++ : yes
'configure' finished successfully (2.239s)
----配置结束
----开始make(编译好!!)
[为简洁省略输出]
Waf: Leaving directory /usr/local/nodejs/node-v0.4.2/build'
'build' finished successfully (21.853s)
-----结束了
-----开始测试
/usr/bin/python "/usr/local/nodejs/node-v0.4.2/tools/scons/scons.py" -
j 2 -C "/usr/local/nodejs/node-v0.4.2/build/default/" -Y "/usr/local/
nodejs/node-v0.4.2/deps/v8" visibility=default mode=release arch=ia32
toolchain=gcc library=static
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
scons: `library' is up to date.
scons: done building targets.
DEST_OS: linux
DEST_CPU: ia32
Parallel Jobs: 2
Product type: program
python tools/test.py --mode=release simple message
[00:00|% 0|+ 0|- 0]: release test-pipe-
head === release test-
pipe-head ===
Path: simple/test-pipe-head
Command: build/default/node /usr/local/nodejs/node-v0.4.2/test/simple/
test-pipe-head.js
--- CRASHED ---
... 所有后续测试都以类似的方式失败。
-----结束测试
----- make install的开始(我没有在前几次尝试中执行make test.it仅在我之后才使用它)
adil-X:/usr/local/nodejs/node-v0.4.2 # make install
Waf: Entering directory `/usr/local/nodejs/node-v0.4.2/build'
DEST_OS: linux
DEST_CPU: ia32
Parallel Jobs: 2
Product type: program
* installing build/default/config.h as /usr/local/nodejs/include/node/
config.h
* installing build/default/tools/nodejs.pc as /usr/local/nodejs/lib/
pkgconfig/nodejs.pc
* installing build/default/node as /usr/local/nodejs/bin/node
* installing build/default/src/node_config.h as /usr/local/nodejs/
include/node/node_config.h
Waf: Leaving directory `/usr/local/nodejs/node-v0.4.2/build'
'install' finished successfully (0.122s)
----- make install
结束我更新了PATH
变量以包含nodejs bin。
现在,nodejs在启动时崩溃并出现以下错误
adil-X:/usr/local/nodejs/node-v0.4.2 # node example.js
node.js:0
Segmentation fault
仍然,我可以看到node.js版本
adil-X:~ # node -v
v0.4.2
OS / Arch信息:
adil-X:~ # cat /etc/*release
LSB_VERSION="core-2.0-noarch:core-3.2-noarch:core-4.0-noarch:core-2.0-
ia32:core-3.2-ia32:core-4.0-ia32"
openSUSE 11.3 (i586)
adil-X:~ # cat /proc/cpuinfo
vendor_id :GenuineIntel
cpu family : 6
model : 23
model name : Intel(R) Core(TM)2 Duo CPU T6500 @ 2.10GHz
stepping : 10
cpu MHz : 1200.000
cache size : 2048 KB
从源代码构建时没有错误,我无法做到 找出问题所在。 我错过了一些明显的东西吗感谢。
答案 0 :(得分:6)
我可以建议一些机制来尝试追踪这个问题。
首先,在strace(1)
上使用ltrace(1)
和nodejs
:
strace -o /tmp/node.strace -fF nodejs script.js
ltrace -o /tmp/node.ltrace -f nodejs script.js
然后查看/tmp/node.*
文件,了解它在崩溃之前的作用。 修改:strace(1)
报告该程序发出的系统调用;当程序通过系统调用与外部世界交互时,它通常是查找错误的最快机制。 ltrace(1)
报告动态库调用,这通常是关于程序内部工作的更多信息。两者都很有用。
其次,运行dmesg > /tmp/dmesg
并查看dmesg
输出中的段错误信息,它将如下所示:
[332430.652393] npviewer.bin[13508]: segfault at 418 ip 00000000f6086d16 sp 00000000ffd8b018 error 6 in libflashplayer.so[f5e19000+b5f000]
这是Adobe Flash崩溃;将地址与程序上的readelf -s
输出进行比较,您可以猜测 far 如何进入segfault正在发生的函数,这在阅读源代码时可能会有所帮助。 (通过地址猜测你进入函数的程度是一个很长的过程,但我发现知道我是否应该看看函数的开头或结尾是否有用。)
第三,您可以使用valgrind(1)
运行程序:
valgrind nodejs script.js
Valgrind是一个令人印象深刻的工具,可能需要相当多的学习才能真正知道。我使用它的那个小,我印象深刻,但我不能像其他更简单的工具一样给予指导。
第四,您可以在nodejs
下运行gdb
:
gdb --args nodejs script.js
当它死亡时,运行bt
以获得回溯。 gdb
也是一个令人印象深刻的程序,你可能会找到使用它的确切行,但它也需要相当多的学习才能真正知道。我很幸运,回溯通常足以找到错误。
幸运的是,您将被指向失败的确切函数,ltrace(1)
将为您提供该函数的参数。这有望足以追踪具体的错误。
答案 1 :(得分:0)
问题。根本没有麻烦。也许 nodejs-v0.4.2 中确实存在一个错误。