“EXC_BAD_INSTRUCTION"异常的问题!

本文详细介绍了iOS开发中常见的两种异常:“EXC_BAD_ACCESS”和“EXC_BAD_INSTRUCTION”。前者通常由内存访问错误引发,需要检查释放、分配等问题;后者则可能源于控件关联不正确、文件所有者设置不当或数组对象引用冲突等情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 “EXC_BAD_ACCESS”异常 该异常属于内存泄露问题。如果是标准C中空指针的问题,则IDE生成的调试信息会自动 帮你指向该位置,如果IDE没有指向,则检查自上一次正确运行以来添加或修改的代码中 release、alloc、赋值、数组的初始化等容易引起内存访问错误的位置。 这里值得注意的是,在有断点的情况下,如果出现异常,则IDE中指向的位置并不一定是 程序挂死的位置。

 “EXC_BAD_INSTRUCTION”异常 出现这种情况的话问题比较难定位,因为导致这个问题的情况一般都很隐蔽。首先,资源 文件(*.nib)中控件与类中输出口的关联问题,例如view有没有关联,控件是否关联了不存 在的输出口,代码生成的按钮是否添加了一个不存在的触发方法等。 然后,在开发中我还发 现,当使用TabBar作为视图控制器的时候,View所对应的TabBar上的按钮的File Owner 也要与控制器类相对应。此外,在使用NSArray方法的indexOfObject的方法时,如果该 Array中存在两个对象引用了同一块内存,那此时也会出现该异常,使用该方法时一定要小 心。

C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:61:18: error: variable or field 'custom_exception_handler' declared void 61 | extern "C" void custom_exception_handler(EXCEPTION_INFO* exc_info) { | ^~~~~~~~~~~~~~~~~~~~~~~~ C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:61:43: error: 'EXCEPTION_INFO' was not declared in this scope 61 | extern "C" void custom_exception_handler(EXCEPTION_INFO* exc_info) { | ^~~~~~~~~~~~~~ C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:61:59: error: 'exc_info' was not declared in this scope 61 | extern "C" void custom_exception_handler(EXCEPTION_INFO* exc_info) { | ^~~~~~~~ C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:61:17: error: variable or field 'custom_exception_handler' declared void 61 | extern "C" void custom_exception_handler(EXCEPTION_INFO* exc_info) { | ^~~~~~~~~~~~~~~~~~~~~~~~ C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:61:42: error: 'EXCEPTION_INFO' was not declared in this scope 61 | extern "C" void custom_exception_handler(EXCEPTION_INFO* exc_info) { | ^~~~~~~~~~~~~~ C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:61:58: error: 'exc_info' was not declared in this scope 61 | extern "C" void custom_exception_handler(EXCEPTION_INFO* exc_info) { | ^~~~~~~~ C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino: In function 'void setup()': C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:143:27: error: 'custom_exception_handler' was not declared in this scope; did you mean '_xtos_set_exception_handler'? 143 | set_exception_handler(custom_exception_handler); | ^~~~~~~~~~~~~~~~~~~~~~~~ | _xtos_set_exception_handler C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:143:5: error: 'set_exception_handler' was not declared in this scope; did you mean '_xtos_set_exception_handler'? 143 | set_exception_handler(custom_exception_handler); | ^~~~~~~~~~~~~~~~~~~~~ | _xtos_set_exception_handler exit status 1 Compilation error: variable or field 'custom_exception_handler' declared void
最新发布
07-25
------------------------------------- Translated Report (Full Report Below) ------------------------------------- Process: Xcode [789] Path: /Applications/Xcode.app/Contents/MacOS/Xcode Identifier: com.apple.dt.Xcode Version: 15.2 (22503) Build Info: IDEApplication-22503000000000000~3 (15C500b) Code Type: X86-64 (Native) Parent Process: launchd [1] User ID: 501 Date/Time: 2025-03-17 04:12:45.5804 +0800 OS Version: macOS 13.7 (22H123) Report Version: 12 Anonymous UUID: D29F54A8-7282-84CD-7ABF-FA42243B8EFE Time Awake Since Boot: 130 seconds System Integrity Protection: disabled Crashed Thread: 0 Dispatch queue: com.apple.main-thread Exception Type: EXC_BAD_INSTRUCTION (SIGILL) Exception Codes: 0x0000000000000001, 0x0000000000000000 Termination Reason: Namespace SIGNAL, Code 4 Illegal instruction: 4 Terminating Process: exc handler [789] Kernel Triage: VM - (arg = 0x0) Returned success with no page VM - (arg = 0x0) Returned success with no page VM - (arg = 0x0) Returned success with no page VM - (arg = 0x0) Returned success with no page VM - (arg = 0x0) Returned success with no page Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 CoreRE 0x1568cd2f7 re::mtl::makeDefaultDevice() + 101 1 CoreRE 0x1562d5ea3 re::RenderManager::init(re::FrameManager*, re::RenderManagerConfiguration const&, re::JobService*, re::ProfilerManager*, re::ColorManager*, re::VFXManager*, re::DepthMitigationService*, re::ImportGraphicsResources*, bool) + 191 2 CoreRE 0x1565f6ca7 re::Engine::init(re::EngineConfiguration const&) + 9249 3 CoreRE 0x156635c9f REEngineInitWithConfiguration + 13 4 RealityFoundation 0x1523b6aec __Engine.init(configuration:) + 412 5 Preview
03-18
<think>嗯,用户想找关于Anlogic TD和ModelSim联合仿真的资料或者教程。首先,我需要检查提供的参考引用中有没有相关信息。引用[1]提到TD支持第三方工具如ModelSim进行功能验证和时序验证,并提供了仿真所需的模型。这说明确实有集成的方法。然后引用[3]和[4]具体讨论了如何设置和使用这两个工具,比如切换路径、运行脚本,以及编译器件库的步骤。用户可能需要详细的步骤指导,比如如何准备仿真环境、编译库、创建工程等。另外,引用[5]提到新建项目的过程,可能和仿真设置有关联。用户可能遇到的问题是环境变量设置不正确或者脚本路径错误,需要提醒注意这些点。同时,用户可能需要知道如何验证设置是否成功,比如运行测试案例。需要将信息整理成步骤,并指出常见问题,确保回答结构清晰,引用正确的来源。还要生成相关问题,比如优化仿真速度或者解决编译错误的方法,帮助用户进一步解决问题。</think>### Anlogic TD与ModelSim联合仿真配置及使用教程 根据Anlogic官方文档和用户实践案例,Anlogic TD与ModelSim的联合仿真配置步骤如下: #### 一、环境准备 1. **安装路径设置** - 确保TD软件和ModelSim安装路径无中文或特殊字符 - 添加TD的仿真库路径到系统环境变量(如`$ALG_LIB_PATH`)[^4] 2. **器件库编译** 每个FPGA系列(如EG4、SF1)需单独编译原语库: ```tcl vlib anlogic_primitive vlog -work anlogic_primitive ${TD安装路径}/primitives/verilog/*.v ``` 此操作需在ModelSim控制台完成 #### 二、TD工程配置 1. **仿真参数设置** - 在TD工程属性中指定第三方仿真工具路径: ```ini Simulation Tool Path = C:/ModelSim/bin ``` - 选择仿真模式为"Functional"或"Timing"[^1] 2. **生成仿真脚本** TD会自动生成`tb_demo.do`文件,包含以下关键指令: ```tcl vsim -L anlogic_primitive work.tb_demo add wave * run 1ms ``` 该脚本位于工程目录下的`sim`文件夹[^3] #### 三、ModelSim联仿操作 1. **启动仿真流程** ```bash cd F:/project/sim do tb_demo.do ``` 需手动切换至仿真目录执行脚本 2. **波形调试技巧** - 使用`force`命令注入激励信号: ```tcl force clk 0 0ns, 1 10ns -repeat 20ns ``` - 通过`log -r /*`记录所有信号变化 #### 四、常见问题排查 | 问题现象 | 解决方案 | |---------|----------| | 找不到器件库 | 检查`modelsim.ini`中的库映射路径 | | 时序仿真失败 | 确认已编译带时序标注的网表文件 | | 信号无变化 | 检查测试台(testbench)的时钟生成逻辑 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值