androidgdbserver
A. android gdbserver 有什麼用
使用 SQL Server 代理服務連接到 SQL Server SQL Server 代理服務可以使用 Windows 身份驗證或 SQL Server 身份驗證連接到 SQL Server 本地實例。無論您選擇哪種身份驗證,帳戶都必須是 sysadmin 固定伺服器角色的成員。 可用身份驗證方法 SQL Server 代理可以使用兩種不同的身份驗證方法連接到 SQL Server 實例: Windows 身份驗證,使用這種方法時,SQL Server 代理服務使用定義為服務啟動帳戶的 Microsoft Windows 域帳戶連接到 SQL Server 實例。 SQL Server 身份驗證,使用這種方法時,SQL Server 代理服務使用 SQL Server 身份驗證登錄名連接到 SQL Server 實例。只有 sysadmin 角色的成員可以這樣登錄。 安全說明: 在 SQL Server 2005 中,SQL Server 代理不支持 SQL Server 身份驗證。僅在管理早期版本的 SQL Server 時可以使用這種身份驗證。
B. gdbserver output: run-as: Package '' is unknown
/system/bin/run-as的許可權不對
首先把手機ROOT 連接電腦 打開USB調試
然後 打開電腦的控制台
> adb shell
> su
> mount -o remount rw /system
> chmod 4750 /system/bin/run-as
> mount -o remount ro /system
之後就能斷點了
C. apk調試方法求助
方法一:
1、使用apktool的-d選項反編譯apk文件
java -jar apktool.jar d -d target.apk -o output
2、在AndroidManifest的application節點中添加 android:debuggable="true"
3、在入口點的類的onCreate中添加如下代碼等待調試
invoke-static{}, Landroid/os/Debug;->waitForDebugger()V
4、回編譯apk
java -jar apktool.jar b -d output -o newTarget.apk
5、對apk進行簽名
java -jar signapk.jar testkey.x509.pem testkey.pk8 newTarget.apk signed.apk
6、將簽名後的apk安裝到手機或者模擬器上
adb install signed.apk
7、將1中的smali代碼導入到Android Studio中
file→open→output目錄→下斷點
8、打開Monitor查找相應的進程
運行→monitor 或者Tools ->Android ->Android Device Monitor
9、配置遠程調試選項
Run→Editor Configurations→Defaults→Remote,點擊+號新增一個,Host為localhost,Port為8700
10、打開apk,點擊綠色的小蟲子就可以開始調試了
方法二:無需修改原apk文件
1、用 Android killer等工具反編譯apk文件
2、將smali代碼入到Android Studio中,安裝smaliidea插件
File→Settings→Plugins→Install plugin from disk…→Restart
3、配置遠程調試選項,打開monitor
4、使用adb以debug方式啟動apk
adb shell am start -D -n package/activitiyname
5、下斷點開始調試,在watch中添加寄存器http://www.315nk.com/不清楚追問,希望能幫助到您
D. 在Android設備上怎麼調試守護進程
其實網上有很多類似的文章,但是你會發現幾乎都不可重現,要麼是細節沒講清楚,要麼是壓根自己沒有真正去試過。這里,我僅給出自己用gdb和gdbserver調試android native code的實際過程,希望對大家有用。
註:以調試mediaserver進程為例.
第一步:你需要下載android,以debug方式編譯,並以生成的image起模擬器或者設備。
第二步:你需要從「http://developer.download.nvidia.com/tegra/files/tegra-gdb-20100430.zip」下載一個gdb,覆蓋到android源碼中gdb對應的位置。
第三步:adb shell到設備,並起gdbserver偵聽目標進程:
adb shell
gdbserver :5039 /system/bin/mediaserver
第四步: 建立pc機和設備的消息連接:
adb forward tcp:5039 tcp:5039
第五步: 使用gdb調試目標進程:
cd android_src
prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-gdb out/debug/target/proct/generic/symbols/system/bin/mediaserver
第六步: 設置符號表:
set solib-absolute-prefix /your_android_src_path/out/debug/target/proct/generic/symbols
set solib-search-path /your_android_src_path/out/debug/target/proct/generic/symbols/system/lib
第七步: 使gdb和gdb server建立連接:
target remote :5039
第八步: ok. 現在可以使用gdb的命令進行調試,譬如next\break\step\info thread等.
E. 請教gdbserver使用方法
方法是沒有問題的。不過你剛gdbserver以attach方式啟動調試的時候,你的程序應該是停在sleep()的庫函數裡面,
這個時候走單步一般會報「Cannot find bounds of current function」。
你啟動gdb之後把set debug remote 1 打開,然後把gdb側和gdbserver側的調試列印都貼上來看一下。
F. gdb載入動態庫成功,但是不能顯示動態庫中的源碼(gdb+gdbserver)
因為具體的給的不夠詳細,不清楚你遇到的情況。
如果僅從斷點上看,應該就是CApartment.cpp:55
但是,如果你的程序編譯的時候,不是-O0,那個可能回不到源碼,只能看匯編。
1、有時候(很少)就是編譯器的錯誤。
2、還有可能就是你調試的程序和你的源碼不匹配
3、你的程序已經崩潰了,破壞了堆棧或者GDB需要的數據。
4、這個地方有特殊的定位信息
5、其他情況,還是比較多的,經常遇到。
如果懂匯編,最好看看匯編。
如果不懂,看看那一條語句是最後一條能夠跟蹤的語句。
仔細看看最後一條語句的所有變數,應該能猜出來是什麼問題。
G. android ndk build BUILD_EXECUTABLE的問題
dr@drBox:~/workspace/JniTest/jni$ ~/android-ndk-r6/ndk-build Compile++ thumb : Test <= JniTest.cpp /bin/sh: /home/dr/android-ndk-r6/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-g++: not found make: *** [/home/dr/workspace/JniTest/obj/local/armeabi/objs/Test/JniTest.o] Error 127
這個錯誤是說找不到arm-linux-androideabi-g++,確實找不到,我從ndk r6中發現根本就沒有linux-x86/文件夾,只有darwin-x86 gdbserver這兩個文件夾,所以了最新的ndk r7b,幸好這裡面有linux-x86文件夾,編譯成功了。
dr@drBox:~/workspace/JniTest/jni$ ~/android-ndk-r7b/ndk-build Compile++ thumb : Test <= JniTest.cpp StaticLibrary : libstdc++.a SharedLibrary : libTest.so Install : libTest.so => libs/armeabi/libTest.so
2.當只改動Android.mk文件後需要編譯,這時mm執行後會報如下提示:
============================================ make: Entering directory `/home/dr/android4.0.3' make: Nothing to be done for `all_moles'. make: Leaving directory `/home/dr/android4.0.3'
說明沒有文件改動,拒絕編譯。
那麼解決辦法可以是去稍微改動一下cpp等文件,加個空格也行。但是還有一種方便的方式就是
給cpp文件加時間戳:touch *.cpp
這樣就可以繼續編譯了,所有cpp文件的時間都更新為最新了。
H. eclipse下使用gdb調試時gdbserver 調試時 msg= Watchdog timeout has expired. Target detached
message from arm-linux-androideabi-gdb.exe which source code is remote.c
in function getpkt_or_notif_sane_1
if( c == SERIAL_TIMEOUT )
...
you need close the target watchdog daemond