utility.c
来自「Android 一些工具」· C语言 代码 · 共 79 行
C
79 行
/* system/debuggerd/utility.c**** Copyright 2008, The Android Open Source Project**** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. ** You may obtain a copy of the License at **** http://www.apache.org/licenses/LICENSE-2.0 **** Unless required by applicable law or agreed to in writing, software ** distributed under the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the License for the specific language governing permissions and ** limitations under the License.*/#include <sys/ptrace.h>#include <sys/exec_elf.h>#include <assert.h>#include <errno.h>#include "utility.h"/* Get a word from pid using ptrace. The result is the return value. */int get_remote_word(int pid, void *src){ return ptrace(PTRACE_PEEKTEXT, pid, src, NULL);}/* Handy routine to read aggregated data from pid using ptrace. The read * values are written to the dest locations directly. */void get_remote_struct(int pid, void *src, void *dst, size_t size){ unsigned int i; for (i = 0; i+4 <= size; i+=4) { *(int *)(dst+i) = ptrace(PTRACE_PEEKTEXT, pid, src+i, NULL); } if (i < size) { int val; assert((size - i) < 4); val = ptrace(PTRACE_PEEKTEXT, pid, src+i, NULL); while (i < size) { ((unsigned char *)dst)[i] = val & 0xff; i++; val >>= 8; } }}/* Map a pc address to the name of the containing ELF file */const char *map_to_name(mapinfo *mi, unsigned pc, const char* def){ while(mi) { if((pc >= mi->start) && (pc < mi->end)){ return mi->name; } mi = mi->next; } return def;}/* Find the containing map info for the pc */const mapinfo *pc_to_mapinfo(mapinfo *mi, unsigned pc){ while(mi) { if((pc >= mi->start) && (pc < mi->end)){ return mi; } mi = mi->next; } return NULL;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?