问题标签 [panic]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - 恐慌处理或发生了什么
我不明白处理恐慌的最佳方法是什么。我可以自己写panic("bad data or empty source")
,我会根据输出确定代码在这个确切的地方失败,但是如何处理在不是我的方法中生成的恐慌。
现在我有这样的错误:
我应该如何与他们合作,或者如何确定问题出在哪里。这对我来说不是有益的。
go - Golang filepath.Walk 在大目录上出现恐慌错误
我正在尝试遍历 C 驱动器上的所有文件,这些文件在 Go中可能效率低下,但我不知道为什么我在执行此操作时不断收到恐慌错误,因为我告诉 walk 函数返回一个 nil 错误代码.
恐慌错误:
您如何处理运行时发生的错误?
谢谢!
logging - 如何从 android 内核恐慌上传模式中提取内核恐慌日志?
在开发过程中,我遇到了崩溃,并显示了内核恐慌上传模式。
有没有办法以某种方式连接到设备并提取日志?
gdb - 如何使用 gdb 工具获取 linux 内核 coredump 以供以后分析?
是否可以在内核执行过程中的特定时间点故意使内核崩溃(通过在此处插入一些 C 语句或其他方式),然后使用普通 gdb 程序收集核心文件进行分析?有人可以分享步骤和需要做什么。
go - golang:如何处理索引超出范围错误?
我正在用 Go 编写一个 CLI 接口程序。我的程序需要用户输入文件名作为参数。以下是我为处理用户不输入任何参数的情况而编写的代码。但它会恐慌并给出错误“索引超出范围”。我该如何处理?
ios - 对与套接字相关的 iOS 内核恐慌进行分类
我有一个 iOS 应用程序,它做了很多低级套接字工作,最近在添加 IPv6 支持后,我注意到在运行我的应用程序时有时会发生内核恐慌。整个设备重新启动,我得到一个包含很多神秘信息的恐慌文件(包括我的应用程序中没有堆栈帧),但有一些关键信息如下所示:
幸运的是这个模块是开源的,我在这里找到了关闭版本的代码:http: //opensource.apple.com//source/xnu/xnu-2782.1.97/bsd/kern/uipc_socket.c
该错误似乎与此功能相匹配:
我很确定第一个 VERIFY() 基本上是一个断言,它失败了。
但是,这只是告诉我,在这段代码运行之前的某个时间,我的程序可能损坏了一些内存。因此,像大多数内存损坏一样,找到原因非常具有挑战性。
根据我的日志记录,我看到这种情况发生在大致一些网络调用之后,包括 socket()、connect()、read() 和 write(),尽管在这里给出代码是不可行的。
另一条信息是这只发生在 IPv6 上。在 IPv4 上,一切正常。但是我已经清理了 IPv6 代码,并没有发现任何明显错误的地方。我也很困惑用户空间中的任何内存损坏问题都会导致内核失败。也许了解这会如何发生将有助于我追踪问题。
大多数人会说的下一步是尝试保护 malloc,但不幸的是,当我尝试打开它时,我遇到了另一个问题,所以现在让我们假设我目前不能使用保护 malloc。
我还尝试在运行时实时附加到程序并使其崩溃,但它不会在任何地方的调试器中停止,它只是重新启动整个设备(iPad)。
如果有人对这个棘手的错误有任何分类的想法,请告诉我。
编辑:
根据其中一个答案的反馈,我检查了相关套接字 API 调用的所有长度,这些似乎是正确的。所以这里似乎还有其他问题,可能会覆盖内存。
我可以尝试使用“Malloc Guard Edges”,但问题停止发生。我不能使用“Guard Malloc”,因为它只能在模拟器上运行,而且由于它与硬件的交互方式,我的应用程序在模拟器上运行不佳。
如果有人有更多想法,请告诉我。
error-handling - 是否有将错误转换为恐慌的宏?
是否有一个宏可以将错误转换为恐慌,类似于try
宏?我需要定义我自己的吗?
例如,如果单元测试无法打开文件,我会感到恐慌。我目前的解决方法是这样的:
iterator - 我可以转换一个迭代器吗- > 到 io::Result
> 没有恐慌?
我有一个Iterator<Item=io::Result<u8>>
我想转换为io::Result<Vec<u8>>
.
会给我,但是如果出现错误,我该Vec<u8>
如何保留零件?Err
recursion - 尝试将切片作为参数传递给递归函数 (Go) 时,切片超出范围
我正在尝试将切片作为参数传递给递归函数。由于切片作为参考传递,我相信我传递给它的递归函数应该能够毫无问题地执行操作。我只使用 append() ,因此不应该对容量不足的切片有问题吗?
预期输出:(在使用全局变量而不是将变量传递给函数时实现)
[[1 2 3 4 6 7] [1 2 3 6 7] [1 2 5 6 7] [1 3 2 5 6 7] [1 3 4 6 7] [1 3 6 7] [1 6 7]]
知道我做错了什么吗?