我正在尝试使用以下命令构建一个独立的基于Rust的二进制文件: cargo --target=armv7-unknown-linux-gnueabihf --release 每当我为目标系统构建二进制文件,并在目标系统上复制并执行该二进制文件时,它都会死机: <binary>:error while loading shared libraries:
libstd-42431e74081a30a8.so:
cannot open shared object file: No such file or directory 这意味着它找不到动态库。 如果将动态库复制到外部SSD
我发现/var/log/sw-cp-server/error_log包含大量以下错误:
("huge" means 569000+ "errors" in last week):
(mod_fastcgi.c.3805) pid 17427 5 not found: No child processes
这个服务器有时会死机,这是我能在日志中找到的唯一“错误”。但是,我无法定位和解决此问题。
对于自定义电路板,我在malloc代码中对glibc做了很少的更改。替换了根文件系统中的glibc,并将内核编译为具有此根文件系统。当内核启动时,我得到一个内核死机,并显示错误:
not syncing- attempted to kill init!
这里的init是一个指向busybox的链接,它是动态编译的。
我认为这是由于init进程无法运行的原因,因为它可能试图访问glibc的功能,这最终会导致它崩溃。你能告诉我在这个时候glibc是否会出现吗?如果是,我怎么才能找到故障的位置,因为内核死机并没有给我提供有用的信息。
谢谢,卡皮尔
在下面的代码中,无效的索引访问x[10]会导致死机。然而,产生的死机消息并没有显示错误的堆栈跟踪-相反,它看起来像这样:%!v(PANIC=String method: runtime error: index out of range [10] with length 3)。此外,程序不会终止,而是在死机发生后继续运行。
基于,Println似乎可以从String()方法中捕捉到异常并记录它们。我如何防止这种行为,使得1)我的程序在String()方法中的死机中终止,2)显示死机的完整堆栈跟踪?
package main
import (
"fmt"
)
type F