Fatal signal 5 (SIGTRAP), code 1 (TRAP_BRKPT)
在华为手机鸿蒙系统4.2.0上面发现有JNI报错信息:
2024-08-14 18:Fatal signal 5 (SIGTRAP), code 1 (TRAP_BRKPT), fault addr 0x7bdd911c30 in tid 3011 (Thread-11), pid 2175 (t.myapplication)
2024-08-14 18:Cmdline: com.myapplication
2024-08-14 18:pid: 2175, tid: 3011, name: Thread-11 >>> com.myapplication <<<
2024-08-14 18: #00 pc 0000000000020c30 /data/app/~~fknWHZgCIhPELEYcOIDVFg==/com.myapplication-kIlrv3njQZh8GuDC_8Qs4w==/lib/arm64/libnativelib.so!libnativelib.so (foo11111(void*, void*)+44) ( ...
aosp_tangorpro-ap2a-userdebug 编译错误
错误提示如下:
[ 86% 1602/1858 13m53s remaining] Target userdata fs image: out/target/product/tangorpro/userdata.img
FAILED: out/target/product/tangorpro/userdata.img
/bin/bash -c "(mkdir -p out/target/product/tangorpro/data ) && (mkdir -p out/target/product/tangorpro/obj/PACKAGING/userdata_intermediates && rm -rf out/target/product/tangorpro/obj/PACKAGING/userdata_intermediates/userdata_image_info.txt ) && (echo \"userdata_fs_type=f2fs\"
>> out/target/pr ...
Frida 查看函数返回struct 类型的方法
追查某个bug,需要查看这个函数的返回值:
sp<IBinder> ServiceManager::tryGetService(const std::string& name, bool startIfNotFound) {
auto ctx = mAccess->getCallingContext();
sp<IBinder> out;
Service* service = nullptr;
if (auto it = mNameToService.find(name); it != mNameToService.end()) {
service = &(it->second);
if (!service->allowIsolated) {
uid_t appid = multiuser_get_app_id(ctx.uid);
bool isIsolated = appid ...
Warning: Cannot display lunch menu.
aosp源代码更新到android-14.0.0_r29(Build ID:AP1A.240305.019.A1)或更新版本,lunch会失败,
tangorpro14$ lunch
You're building on Linux
Warning: Cannot display lunch menu.
Note: You can invoke lunch with an explicit target:
usage: lunch [target]
Which would you like? [aosp_cf_x86_64_phone-trunk_staging-eng]
Pick from common choices above (e.g. 13) or specify your own (e.g. aosp_barbet-trunk_staging-eng):
查看./build/envsetup.sh ,
这个选择列表是有脚本函数get_build_var COMMON_LUNCH_CHOICES来生成,在命令行里执行后:
$get_build_var COM ...
Redundant Character Escape '\\/' in RegExp
Redundant Character Escape ‘\/’ in RegExp
正则表达式的转义字符反斜杠 **\**总是不好理解,因为字符串本身会先转义一次。
上面的Android Studio的经过意思是说在正则表达式中使用 ‘\\/’ 是多余的,因为字符串 **“\\/”**转义之后是 \/ ,而正则表达式匹配的时候 \/ 等价于 /
Matching Characters
如果需要匹配字符 \ 这两个字符 ,标准的匹配字符串是 “\\\\” ,首先经过字符串的转义,正则表达式使用的才是 \\ 。
因此匹配一个反斜杠和一个正斜杠 \/ 的写法就有两种:
“\\\\/”
“\\\\\\/” 编辑器会提示Redundant Character Escape
Test Program
String inputStr=":android\\/data";
Pattern PATTERN_BLOCK_PATH = Pattern.compile(".*:android\\/(?:data|obb|sandbox)$" ...
