请参考如下步骤排查:CPP断点失效问题现象描述CPP调试启动正常且应用正常运行到目标代码所在文件后,无法进入断点或断点置灰。问题原理分析1)应用没有运行到实际断点所在文件。2)cpp文件对应的so库未加载到lldb侧。3)so文件没有带调试信息导致。问题解决思路1)判断应用是否运行正常,且运行到了断点目标文件。首先通过对比运行和调试来判断应用是否运行正常,如果运行应用都出现问题,调试必然会有问题。另外可以参考下图调试控制台来判断页面是否被调试服务加载,有的时候应用没有操作到目标断点页面,调试控制台的页面信息也不会加载。2)判断cpp文件对应的so库是否加载到lldb侧这个可以通过查看so加载信息查看开发者的so是否被加载进来,如下图查看so加载情况;出现该问题则说明应用运行有问题,可以检查应用运行的情况,该问题通常是应用框架引起的。3)判断断点是否失效在混合调试Tab页的debugger项中有lldb调试控制台,在控制台中输入br list观察断点是否为有效断点。断点后有(pending)的为无效断点。无效断点通常为缺少调试信息导致。4)判断是否为so没有调试信息在当前无效断点页面的其他行也尝试断点,如果依旧为无效断点,可以尝试使用NDK下面llvm工具llvm-objdump.exe来判断so是否有调试信息。注:通常llvm-objdump.exe工具位于:SDK安装目录\HarmonyOS-NEXT-DP1\base\native\llvm\bin
请参考如下步骤排查:
CPP断点失效
问题现象描述
CPP调试启动正常且应用正常运行到目标代码所在文件后,无法进入断点或断点置灰。
问题原理分析
1)应用没有运行到实际断点所在文件。
2)cpp文件对应的so库未加载到lldb侧。
3)so文件没有带调试信息导致。
问题解决思路
1)判断应用是否运行正常,且运行到了断点目标文件。首先通过对比运行和调试来判断应用是否运行正常,如果运行应用都出现问题,调试必然会有问题。另外可以参考下图调试控制台来判断页面是否被调试服务加载,有的时候应用没有操作到目标断点页面,调试控制台的页面信息也不会加载。
2)判断cpp文件对应的so库是否加载到lldb侧这个可以通过查看so加载信息查看开发者的so是否被加载进来,如下图查看so加载情况;出现该问题则说明应用运行有问题,可以检查应用运行的情况,该问题通常是应用框架引起的。
3)判断断点是否失效在混合调试Tab页的debugger项中有lldb调试控制台,在控制台中输入br list观察断点是否为有效断点。断点后有(pending)的为无效断点。无效断点通常为缺少调试信息导致。
4)判断是否为so没有调试信息在当前无效断点页面的其他行也尝试断点,如果依旧为无效断点,可以尝试使用NDK下面llvm工具llvm-objdump.exe来判断so是否有调试信息。
注:通常llvm-objdump.exe工具位于:SDK安装目录\HarmonyOS-NEXT-DP1\base\native\llvm\bin