gpt4 book ai didi

android - 在 gdb 中看不到任何函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:19:26 27 4
gpt4 key购买 nike

我正在尝试调试在 Android ARM 环境中运行的非常简单的 C 程序:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main (int argc , char **argv)
{
printf ("%d, sleeping for 10\n", getpid());
sleep (10);
printf ("%d\n", getpid());
return 0;
}

我编译它:

arm-linux-androideabi-gcc --sysroot /Application/Binaries/android-ndk/platforms/android-15/arch-arm/ printf.c -o printf

我启动了该应用程序并在模拟器中启动了 gdbserver,并在本地附加。

现在,如果我尝试打破某些东西:

(gdb) b 
_DYNAMIC __FINI_ARRAY__ __bss_start _end atexit
_GLOBAL_OFFSET_TABLE_ __INIT_ARRAY__ __dso_handle _start main
__CTOR_LIST__ __PREINIT_ARRAY__ _edata abitag
(gdb) info sharedlibrary
From To Syms Read Shared Object Library
No /system/bin/linker
No libc.so

没有可见的功能。而 libc.so 似乎没有加载?这太奇怪了。

我错过了什么吗?

编辑

添加几个参数:

arm-linux-androideabi-gcc --sysroot /Application/Binaries/android-ndk/platforms/android-15/arch-arm/ printf.c -o printf -g -Wall

现在:

(gdb) b 
/Application/Binaries/android-ndk/platforms/android-15/arch-arm//usr/include/unistd.h
_DYNAMIC
_GLOBAL_OFFSET_TABLE_
__CTOR_LIST__
__FINI_ARRAY__
__INIT_ARRAY__
__PREINIT_ARRAY__
__bss_start
__dso_handle
__page_shift
__page_size
_edata
_end
_start
abitag
atexit
char
double
float
int
long int
long long int
long long unsigned int
long unsigned int
main
printf.c
short int
short unsigned int
signed char
unsigned char
unsigned int

最佳答案

您需要使用 -Wall -g 标志编译到您的 GCC ARM 的交叉编译器。

一旦程序运行,共享库(包括 libc.so)就会被加载。尝试在 main 中放置一个断点,只有在那里执行 info sharedlibrary 事情。

关于android - 在 gdb 中看不到任何函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24597580/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com