When I debug android app, if I work with Java, I can use Log.d("TAG", "xxxx", new Throwable()) to print backtrace of Java code. This is really handy for me to find bugs. But when I work with native library (e.g. libwebcore.so), there seems no way to print backtrace in runtime. The only way to debug native code is use gdbserver.
I have a question: Is there any way to print backtrace in C/C++?
I have some piece of code which uses JNI. I can debug code wrote in Java directly in Eclipse (using ADT). I even have a script, which help me debug native code with gdb. However this is not very comfortable way for doing this.Is it possible to configure Eclipse to use gdb (I guess gdbserver) for debbuging android native applications? Do you know where I could find any description of this?
I'm trying to debug my native JNI code located on a shared library. I have been trying to debug using gdb/gdbserver.
Here is how I go about, trying to debug:
How to debug JNI native code on the Android emulator I'm using gdb/gdbserver I do this at the emulator terminal gdbserver localhost:
when I step on the Android Java code so the function Java_testJNI_printHello is called, I get this error on the server side gdb: Unable to get location for thread creation breakpoint: requested event is not supported
I have mostly been avoiding debugging when I can because of these two problems, so hopefully someone here has suggestions to avoid them:
1. It seems that I have to build the SDK (`make sdk`) and copy it off to a directory for Eclipse to use almost every time I want to debug. I haven't followed through the "sdk" directive, so I'm not clear on why this is necessary instead of just having Eclipse read from the source in my directory. Isn't there some way for it to do this? FYI: I have a (modified) full checkout of Donut, not just the SDK.
2. How can I debug without using Eclipse? I would really like to be able to use something like gdb/jdb.
I installed and eclipse, android sdk and tried the first "hello, android" tutorial but nothing happened on the AVD There are no compilation error, I tried to set break points in the but it does not seem like the application started running at all...
I can no longer run/debug my application in eclipse, when I attempt to I get the following error in the console:Installation error: INSTALL_PARSE_FAILED_NO_CERTIFICATES.E/PackageParser( 65): Package com.example.foo no certificates at entry assets/community_error.html; ignoring.I have not touched my android config or project configuration, and it was working fine yesterday, i'm running ubuntu/jaunty, i did a kind of security update this morning and i think it might have broken zlib or something.
I am trying to following this documentation 'http://source.android.com/using-eclipse' to debug android Launcher Activity in eclipse.
It said' You may need to open the Debug perspective (next to the "Java" perspective icon in the upper-right, click the small "Open Perspective" icon and select "Debug"). Once you do, you should see a list of threads; if you select one and break it (by clicking the "pause" icon), it should show the stack trace, source file, and line where execution is at. Breakpoints and whatnot should all work.
My question is which threads I need to select in order to debug Launcher Activity? I don't see a thread name Launcher.
I have set up a "Debug Configuration" to debug my Android project. However to get it to debug on a device (HTC Desire) I have to set the Configuration's "Target" to "Manual", there seems to be no way to set in the Debug Configuration that it should go to a selected Device.
It does work, but each debug session I have to "Manually" choose the HTC device from the dialog. Can I set it to always to go the Device?
I'm using Eclipse and have an emulator running Android 2.1 and my IntentService. I'd like to step through my onHandleIntent() overridden function. I've put in a breakpoint on the first statement of the function, which is Context context = getBaseContext();. When the intent is called the program just fails and does not go to debug view in Eclipse.
I've got some trouble with the media backend (mostly Stagefrightplayer) in Android, and I'd like to understand why it throws the errors it does. The errors are usually device spesific, so debugging on an emulator wouldn't be sufficient.
I've also gotten the player to bork completely and spit out a traces.txt.
Is there a way to debug what's happening, just like I debug Java code?
I am programming Android applications, and the best way here may or may not be the same as Java in general.I simply want to be able to set a debug flag that will only execute certain portions of code when it's set to true equiv to C++ setting a preprocessor #define DEBUG and using #ifdef DEBUG.Is there an accepted or best way to accomplish this in Java?
Right now I'm just going to set a variable in my Application object, but I don't imagine this is the best way.
I am using eclipse android plugins to build a project, But i am getting this error in the console window: [2010-02-03 10:31:14 - androidVNC]Error generating final archive: Debug certificate expired on 1/30/10 2:35 PM!
I uploaded my application to Market and then downloaded it to my phone. Now I'm unable to use debug keystore which is used by default by Eclipse ADT Plugin (Re-installation failed due to different application signatures) and when I'm trying to setup own keystore in Eclipse->Windows->Android->Build->CustomDebugKeystore, I'm unable to enter password or accept keystore and type password later. Is there anything I can do or only way do debug app on device is to uninstall market version and deal with default debug keystore?
I have an application I am writing for Android that basically does a screen scrape of a large table on the web and presents it in a nicer way on the handset. Its 500k of html and takes about 20 seconds or so normally.
When I have my phone hooked up to the computer, I used to be able to just click on "Run" and my code would execute similiarly speedy, as opposed to Debug where it would take 10 minutes to complete.
Now, however, clicking "run" behaves just like debug mode.... I don't want this overhead, how do I get eclipse to stop sending my app to the debugger already? I have searched online and found a couple people with the same issue, but simply rebooting my phone doesn't fix it, and there have been no other solutions posted that I have found.
This is more of an Eclipse error than an Android or Ant error. My Eclipse project won't build because when it sees the build.xml created from the Android command, it starts looking for the debug and release commands. Well, since they are dynamically generated from the <setup> task, they don't exist. So now Eclipse (Build id: 20100218-1602) locking the project from build/run based on these errors. kay.. so here is the weird part: It worked this morning. In fact it has been working for weeks with the build.xml file sitting there. All I did was edit the build.xml file in Eclipse (changed some constants). Ant thinks everything is peachy.
I have a activity B that is called by activity A, I want to debug the code in B. I have set the breakpoint, however the debug control never enters B.
When I debug in eclipse, although the class B is called from class A, the debbugger pointer never enters the new window, where I have placed a debug point in Class B. I am not able to take the pointer control to class B and stop at a specific point, which will help me verify certain variable values.
i install new version of eclipse and Android sdk , but when i run an android project i get this error
Could not open Selected VM debug port (8700). Make sure you do not have another instance of DDMS or of the eclipse plugin running. If it's being used by something else, choose a new port number in the preferences. ADB server didn't ACK * failed to start daemon * i try to solve the problem by following this , but i still get the same problem:
-Window -> Preferences -> Android -> DDMS -Set Base local debugger port to "8601" - Check the box that says "Use ADBHOST" and the value should be "127.0.0.1"
i am also tryng to reinstall android pluing for ecipse and even the android sdk , but i still get the same problem!
I have a library written in C which implements some complicated algorithm over two databases and as a result produce new one. I am trying to import it in android using android-ndk. What is the correct wat to use sqlite in you native libraries, i was able to build the sqlite manually using the ndk but when i use it gives some strange errors when trying to fetch rows from db which is on phone storate - after i fetch some data i got SQL:database not opened. how can use sqlite in native code on android.
We know that it's very convenient to use TraceView in Android java code to check the runtime of different chunks of code. Now I develop my app with NDK and I want to check the runtime of some native functions, but I found nothing in TraceView guide if it's possible to use this tool. Because I noticed that one of my native methods spent too much time and I want to dig out the more detailed root cause. Is there anybody know if we can use TraceView in native code?