Skip to content

Commit

Permalink
Update 导航定位建图程序编译调试经验.md
Browse files Browse the repository at this point in the history
  • Loading branch information
LiZhengXiao99 committed Jan 17, 2025
1 parent 60a0b08 commit bcc9b50
Showing 1 changed file with 32 additions and 3 deletions.
35 changes: 32 additions & 3 deletions 导航定位建图程序编译调试经验.md
Original file line number Diff line number Diff line change
Expand Up @@ -117,9 +117,21 @@
---
### 11、VS 下设断点显示“当前不会命中断点。还没有为该文档加载任何符号。”
### 11、断点变灰,显示“当前不会命中断点。还没有为该文档加载任何符号。”
> 可能是设置成了 Relese 模式,改成 Debug 模式才能断点调试。
> * 可能是设置成了 Relese 模式,改成 Debug 模式才能断点调试。
>
> * ROS 程序命令编译的时候
>
> * 加上参数启用调试:`catkin_make -DCMAKE_BUILD_TYPE=Debug`,如果能进断点但是看不了变量的值,可能是因为有些部分是之前没设置调试编译的,可以把编译生成的文件全删了,再重新编译。
>
> * 在 CMakeLists.txt 中指明编译类型:
>
> ```c
> if(NOT CMAKE_BUILD_TYPE)
> set(CMAKE_BUILD_TYPE Debug)
> endif()
> ```
---
Expand Down Expand Up @@ -207,7 +219,7 @@
---
### 21、Linux下出现“Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend”
### 21、Linux下出现“Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend”
> * 当多个线程或进程同时尝试访问相同的数据缓存时,会出现缓存锁竞争的情况。这意味着一个进程正在更新缓存数据,而其他进程正在等待该锁释放,以便它们能够访问或修改缓存。
> * 简单来说就是资源被别的程序占用了,实在找不到原因,可以重启系统来解决。
Expand All @@ -225,6 +237,18 @@
> * `烫烫烫烫烫烫烫烫烫烫烫`:在C/C++编程环境中,当程序试图读取未初始化的字符数组(比如一个本应存放有效字符串但没有正确赋值的数组),而这些内存区域恰好存放了一些看似无意义的值时,可能会出现连续的“烫”字。这通常是因为这些内存区域中存储的数据在以某种文本编码方式(如ASCII或UTF - 8)解读时,被显示成了“烫”这个字符。这可能暗示着这段内容与程序底层的内存数据错误有关,也许是字符串相关的变量没有正确初始化或者已经被破坏。
> * `□□□□□□□□□□□`:这些方块可能代表无法识别或显示的字符。这有几种可能,一是字体不支持某些特殊字符或符号,导致显示为方块占位;二是数据在传输或存储过程中部分丢失或损坏,使得原本的字符无法正确解析,所以用方块来替代显示。也有可能是加密或编码后的内容,没有使用正确的解密或解码方式,导致无法正常显示。
> * `锟斤拷锟斤拷锟斤拷锟斤`:在文本处理中,这是比较典型的UTF - 8编码错误导致的乱码。当数据在不同编码系统之间转换出现问题,或者文本文件本身的编码格式被破坏时,就可能出现这种情况。比如,一个文本文件原本是用GBK编码保存,在以UTF - 8编码方式读取时,如果没有正确的转换机制,就容易出现“锟斤拷”这样的乱码。这表明内容可能经历了错误的编码转换或者文本文件的完整性受到了影响。
>
> * **当ROS终端输出中文时出现乱码 `?????`**:在main 函数开头加入:
>
> ```c
> setlocale(LC_CTYPE, "zh_CN.utf8");
> ```
>
> 并且引入头文件:
>
> ```c
> #include <locale.h>
> ```
---
Expand Down Expand Up @@ -299,3 +323,8 @@
---
### 29、VSCode 优化设置
> * **C++ 代码自动补全提示太慢**:在设置中把 “Intelli Sense Engine” 设为 “Tag Parser” 模糊提示;原本的提示是智能的,会根据上下文和咱们输入的习惯调整,但是智能提示如果卡的用不了,就只能退而求其次选模糊提示了。
> * **C++ 程序提示找不到头文件**:在 `c_cpp_properties.json` 文件的 `includePath` 中手动添加头文件引用路径,或者也可以把 `c_cpp_properties.json` 文件删了,再重新打开 VSCode,可以自动生成新的 `c_cpp_properties.json`
> * **设置在底部状态栏显示 CMake 状态、编译工具链信息**:在设置中把 CMake 的 “Status Bar Visibility” 设为 “visible"。

0 comments on commit bcc9b50

Please sign in to comment.