簡體   English   中英

在gdb中看不到任何功能

[英]Cannot see any functions in gdb

我正在嘗試調試在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標志編譯到用於ARM的GCC交叉編譯器。

程序libc.so將加載共享庫(包括libc.so )。 嘗試在main放置一個斷點,然后僅在該處執行info sharedlibrary

沒有“ -O0 -g”選項構建的本機apps / .so是非常常見的症​​狀。

看起來您正在構建使用AOSP附帶的C / C ++運行時的純本機應用程序。

只要您維護自己的構建系統,構建方法就可以正常工作。 一旦開始使用Android.mk構建,就不會直接控制調試標志。

如果您打算在AOSP中進行大量本機開發,請參閱使用eclipse調試Android的本機應用程序一文。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM