如何为安卓原生应用生成调试符号?

dre*_*lin 7 c++ android android-ndk

我在为原生 Android 进行开发时迈出了第一步,需要一些帮助。我将 armv7 gdbserver 复制到我的手机并编译用 C++ 编写的“hello word”测试应用程序。现在我想用 android ndk 包中的 gdb 调试我的应用程序。

我启动 gdb 并通过目标远程命令连接到手机,并在 gdb 保留“s”命令后收到此消息。

(gdb) target remote 192.168.1.157:1235
Remote debugging using 192.168.1.157:1235
Reading /data/local/Test from remote target...
warning: File transfers from remote targets can be slow. Use "set  sysroot" to access files locally instead.
Reading /data/local/Test from remote target...
Reading symbols from target:/data/local/Test...done.
Reading /system/bin/linker from remote target...
Reading /system/bin/linker from remote target...
Reading symbols from target:/system/bin/linker...(no debugging symbols found)...done.
0xb6fdf654 in __dl__start () from target:/system/bin/linker
(gdb) s
Single stepping until exit from function __dl__start,
which has no line number information.
Run Code Online (Sandbox Code Playgroud)

我在做什么错?为什么它成立?以及如何生成符号/调试信息?我尝试设置“set(CMAKE_BUILD_TYPE Debug)”但没有生成新文件。

我的 CmakeLists.txt

set(PROJECT_NAME Test)

set(CMAKE_CXX_STANDARD 11)

set(CMAKE_TOOLCHAIN_FILE android-cmake/android.toolchain.cmake)
set(ANDROID_NDK /home/drem1lin/Android/Sdk/ndk-bundle)


set(ANDROID_NATIVE_API_LEVEL "android-19")
set(ANDROID_TOOLCHAIN_NAME "arm-linux-androideabi-4.9")
set(ANDROID_ABI "armeabi-v7a")

project(${PROJECT_NAME}) 
cmake_minimum_required(VERSION 3.1)

include_directories(include)
file(GLOB SOURCES source/*.c*)
add_executable(${PROJECT_NAME} ${SOURCES})
foreach (module_src ${MODULES})
    get_filename_component(module ${module_src} NAME_WE)
    string(TOLOWER ${module} module)
    add_library(${module} SHARED ${module_src})
    set_target_properties(${module} PROPERTIES PREFIX "")
    set_target_properties(${module} PROPERTIES SUFFIX ".m")
    target_link_libraries(${module} ${LIBRARY_DEPS})
endforeach(module_src)
Run Code Online (Sandbox Code Playgroud)

最好的问候保罗。

dre*_*lin 2

我遇到这个麻烦是因为我对linux构建系统非常了解。{project}/obj/local/armeabi/在文件夹中创建了带有符号的可执行文件