-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
doc: add doc to show how to use profiling and code coverage functions
- Loading branch information
shuzhuo
committed
Aug 16, 2024
1 parent
e945b0b
commit f256e81
Showing
21 changed files
with
401 additions
and
16 deletions.
There are no files selected for viewing
66 changes: 53 additions & 13 deletions
66
16-incomplete_data_output_when_using_profiling_function.md
100644 → 100755
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,27 +1,67 @@ | ||
# 使用Profiling功能时数据输出不完整 | ||
# 使用Profiling功能时可能遇到的一些问题 | ||
|
||
## 问题说明 | ||
目前使用 Profiling 功能可能遇到一些问题,记录如下: | ||
* **问题1**:日志打印中报片上内存不足,没有充足空间存放 gprof/gcov 数据 | ||
* **问题2**:采用串口输出的方式收集数据,打印被冲掉,Console 或 Terminal 收集的数据不全,导致数据解析失败,不能生成`gmon.out`文件或者`*.gcno`文件 | ||
* **问题3**:删掉 `gmon.out` 文件,再次解析时,弹出 No files have been generated 错误弹框 | ||
|
||
在NucleiStudio 2024.06中,当选择使用串口输出的方式使用Profiling功能时,可能存在最终结果不及预期。 | ||
### 问题1:日志打印中报片上内存不足,没有充足空间存放 gprof/gcov 数据 | ||
|
||
![](asserts/images/16-1.png) | ||
gprof/gcov data 需要存到片上内存上,需要占用片上内存空间(几十到几百KB不等),占用内存的大小与用例规模有关,需要确保片上内存足够大。 | ||
|
||
在使用`Parse and Generate Hexdump`时没有生成对应的`gmon.out`文件或者`*.gcno`文件,是因为在Console或者Terminal中,对输出的内容条数有限制,当输出的内容长度超过限制时,前面的内容会丢失。 | ||
![Alt text](asserts/images/16/overflow.png) | ||
|
||
![](asserts/images/16-2.png) | ||
|
||
![](asserts/images/16-3.png) | ||
|
||
### 解决方案 | ||
|
||
首先需要确认软件配置的内存大小与硬件实际大小相匹配(ilm/sram/flash/ddr/),可以使用内存大一点的下载方式(如 `DOWNLOAD=ddr`)。 | ||
|
||
## 解决方案 | ||
修改软件配置的内存大小,与硬件实际大小相匹配: | ||
比如,如果是 `DOWNLOAD=ilm` 模式下载,可以按硬件的 ilm 与 dlm 大小适配。 | ||
对于 nuclei sdk 0.6.0 版本,修改的文件为`nuclei-sdk/SoC/evalsoc/Board/nuclei_fpga_eval/Source/GCC/gcc_evalsoc_ilm.ld` | ||
|
||
为了更方便的使用Profiling功能,可以将Console和Terminal中对输出内容的上限做修改。 | ||
~~~c | ||
INCLUDE evalsoc.memory | ||
|
||
建议将Console中输出内容条限修改为不受限制。 | ||
MEMORY | ||
{ | ||
ilm (rxa!w) : ORIGIN = ILM_MEMORY_BASE, LENGTH = ILM_MEMORY_SIZE | ||
ram (wxa!r) : ORIGIN = DLM_MEMORY_BASE, LENGTH = DLM_MEMORY_SIZE | ||
} | ||
~~~ | ||
|
||
![](asserts/images/16-4.png) | ||
### 问题2:Console 或 Terminal 收集的数据不全导致数据解析时失败 | ||
|
||
建议将Terminal中输出内容条限修改为一个较大的值。 | ||
在 NucleiStudio 2024.06 中,当选择使用串口输出的方式使用 Profiling 功能时,可能遇到在使用 `Parse and Generate Hexdump` 解析数据时时没有生成对应的 `gmon.out` 文件或者 `*.gcno` 文件。这可能是因为串口数据被冲掉,导致数据不完整,从而解析失败 | ||
![generated_fail](asserts/images/16/generated_fail.png) | ||
|
||
![](asserts/images/16-5.png) | ||
确认方法:需确保串口打印开始时的打印没有被冲掉,参考[一个例子用来展示Profiling以及Code coverage功能](17-an_example_to_demonstrate_the_use_of_profiling_and_code_coverage.md) | ||
|
||
![parse_profiling_fail](asserts/images/16/parse_profiling_fail.png) | ||
|
||
### 解决方案 | ||
因为在Console或者Terminal中,对输出的内容条数有限制,当输出的内容长度超过限制时,前面的内容会被冲掉,导致内容不完整,这样会解析失败。 | ||
|
||
需要调节 Console 或 Terminal 输出大小限制,确保数据没有被冲掉。为了更方便的使用 Profiling 功能,可以将 Console 和 Terminal 中对输出内容的上限做修改。 | ||
|
||
* 建议将Console中输出内容条限修改为不受限制。 | ||
Window->Preference 进入如下界面: | ||
![config_console_limit](asserts/images/16/config_console_limit.png) | ||
|
||
* 建议将Terminal中输出内容条限修改为一个较大的值。 | ||
Window->Preference 进入如下界面: | ||
![config_terminal_limit](asserts/images/16/config_terminal_limit.png) | ||
|
||
|
||
|
||
### 问题3:删掉 gmon.out 文件,再次解析,弹出 No files have been generated 错误弹框 | ||
|
||
手动删掉工程文件夹下的 gmon.out 文件,再次解析时出现 `No files have been generated` 的错误弹框 | ||
|
||
![generated_fail](asserts/images/16/generated_fail.png) | ||
|
||
### 解决方案 | ||
|
||
手动删掉 gmon.out 文件后,需要手动刷新一下工程。 | ||
![refresh_project](asserts/images/16/refresh_project.png) |
Oops, something went wrong.