我有一个在嵌入式 Linux 设备上运行的应用程序,我正在扩展它的新功能。新功能需要 GLib,因此我正在将所需的库动态链接到应用程序。
当我这样做并在设备上运行应用程序时,出现分段错误。当我动态链接新库时会发生这种情况。GDB 的回溯显示故障发生在另一个自定义动态链接库中。不幸的是,我只得到了以下消息的部分跟踪:
回溯停止:帧没有保存 PC
请注意,我只是链接了另一个共享库,并未添加任何新代码。如果我静态链接自定义库,崩溃就会消失。我怀疑内存损坏发生在其他地方,并且当动态链接自定义库以便发生分段时,条件(即内存映射)恰到好处。
任何人都知道我可以用来进一步调试的任何好的工具和技术?
有谁知道当 UBI 用完所有为坏块管理保留的 PEB 时会发生什么?例如,假设我有一个保留了 14 个 PEB 的 UBI 卷
# ubinfo -d 1
ubi1
Volumes count: 1
Logical eraseblock size: 126976 bytes, 124.0 KiB
Total amount of logical eraseblocks: 1466 (186146816 bytes, 177.5 MiB)
Amount of available logical eraseblocks: 787 (99930112 bytes, 95.3 MiB)
Maximum count of volumes 128
Count of bad physical eraseblocks: 0
Count of reserved physical eraseblocks: 14
Current maximum erase counter value: 9
Minimum input/output unit size: 2048 bytes
Character device major/minor: 249:0
Present …
Run Code Online (Sandbox Code Playgroud)