当前位置:  开发笔记 > 编程语言 > 正文

运行Rust程序时如何处理"发生未知错误"?

如何解决《运行Rust程序时如何处理"发生未知错误"?》经验,为你挑选了1个好方法。

我目前正在运行cargo run并获得最常见的错误An unknown error has occurred.

当我运行时,cargo run --verbose我得到Process didn't exit successfully: 'target/debug/ok_rust' (signal: 11)了我不知道如何处理.

我该如何调试?我应该做些什么?用夜间版本测试它,但是相同的库?我怎么知道我是否负责或者是否是Rust?



1> Vladimir Mat..:

根据您提供的错误,这不是工具的问题(也就是说,Cargo和rustc都能正常工作),但是对于您的程序:

Process didn't exit successfully: 'target/debug/ok_rust' (signal: 11)

信号11表示程序中发生了分段错误.Segfaults通常在访问无效内存时发生,例如,在读取被破坏的对象时.Rust明确旨在避免段错误; 如果发生这种情况,则表示unsafe程序中的某个块包含错误.这个不安全的块可能是您自己编写的块,也可能是您使用的库之一.

无论如何,你需要找到segfault发生的确切位置.您可以使用调试器(gdb或lldb,具体取决于您的系统),也可以将调试输出添加到您的程序中,您可以使用它来查明有问题的行.然后,您需要将问题追溯到其中一个unsafe块.例如,如果您发现通过引用访问值时发生了段错误,例如

let x = some_struct.field;

在哪里some_struct: &SomeStruct,那么很可能some_struct指向一个无效的对象; 只有some_structunsafe块中创建时才会发生这种情况,因此您需要查找some_structs源自何处.

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有