IAR关于无法使用go to Defination of 问题的解决思路

IAR 关于无法使用go to Defination of 问题的解决思路

一.前言

最近在准备今年的智能车竞赛,由于要用新的单片机,所以就把IAR换了一个比较新的版本(这是因为IAR不能向上兼容,而有些例程是用更高的版本写的),换了以后无比的后悔,除了写代码的时候常常会跳出个fatal error卡我一下以外,还常常会在烧代码的时候崩溃,这让我一度怀疑是这个IAR的版本或是我的电脑过于垃圾。除此之外,常用的Go to Defination功能也不能用了,我在网络上找了非常非常非常久,可就是找不到一个能彻底解决问题的方法。由于这个并不影响我打代码和烧代码(不过会影响积极性),所以我就随它去了。这几天碰巧上课要烧stm32的程序,又碰到了同一个问题,于是我怒而把它解决了,差不多搞了一个多小时,在这里贴上自己的解决思路,希望可以对看这篇文章的人有所帮助。

二.解决思路

首先我们大致上给出IAR在处理项目的时候偷偷进行的一些操作:

调用
生成Source Browser log && 读取项目配置 &&解析pbi文件
不可以
可以
START
Source Browser
可否解析?
打印报错&&弹窗fatal error
解析项目下所有c文件并生成pdb文件
Go to Defination
User
是否有pdb文件
根据pdb跳转
无动作

首先依据fatal error的弹窗,我们可以判断是在解析pbi文件的时候出了问题
IAR关于无法使用go to Defination of 问题的解决思路
首先比较重要的一点,如果你是高版本的IAR(8以上版本),先检查你的project路径中是否有中文
IAR关于无法使用go to Defination of 问题的解决思路如果有中文,那就乖乖改名字吧。

如果改完了或是并不存在中文的问题,我们再在Debug/Obj文件加下面观察是否有正确的pbi文件,如果没有,首先退出IAR并关闭其所有线程(任务管理器),然后删除Debug文件和Setting文件夹(和工程文件同目录),重新用IAR打开该项目,然后rebuild all,全部重新编译,这个时候理应没有问题了。
如果还有问题,Tools → Options → Project:取消勾选Generate browse information,再将上述步骤执行一遍,之后,Tools → Options → Project:勾选Generate browse information,再重新编译,如果还有问题,看看你的路径名字是不是还有中文。

如果看到source browser log中显示如下消息
IAR关于无法使用go to Defination of 问题的解决思路
那就没问题了
如果还有问题,那就按上面的步骤再做一遍,IAR真的是个很可爱的工具。

三.再聊聊吧

今天难得又更了一篇啊,我这次是想要写了才写的,作业都还没做完,车也调了一半,但却能腾时间给一些无关紧要的事情呢。下一次写点什么东西好呢?应该会更一些算法相关的文章吧,比如如何快速求平方根倒数这种,或者是一些ACM解题的文章吧。如果说你想问我为甚么不写写智能车的话呢。。因为我菜呀,等以后真的自己能写出比较好的嵌入式的架构了之后可能会考虑做一期吧。。