Override fprintf(stderr) in android_debug.h
This commit is contained in:
@@ -1327,7 +1327,7 @@ public class MainActivity extends Activity
|
||||
public CloudSave cloudSave = null;
|
||||
public ProgressDialog loadingDialog = null;
|
||||
|
||||
private FrameLayout _videoLayout = null;
|
||||
FrameLayout _videoLayout = null;
|
||||
private EditText _screenKeyboard = null;
|
||||
private String _screenKeyboardHintMessage = null;
|
||||
static boolean keyboardWithoutTextInputShown = false;
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
#ifndef __ANDROID_DEBUG_H__
|
||||
#define __ANDROID_DEBUG_H__
|
||||
|
||||
// Redirect printf() to Android log
|
||||
// Put this file into CFLAGS: "-include ../android_debug.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <android/log.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -46,4 +50,20 @@ namespace std
|
||||
|
||||
#define printf(...) __android_log_print(ANDROID_LOG_INFO, "SDL-app", __VA_ARGS__)
|
||||
|
||||
// Override fprintf(stderr, ...) constructs
|
||||
static inline int __sdl_logged_fprintf(FILE *stream, const char *format, ...)
|
||||
{
|
||||
int ret = 0;
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
if( stream == stderr || stream == stdout )
|
||||
ret = __android_log_vprint(ANDROID_LOG_INFO, "SDL-app", format, args);
|
||||
else
|
||||
ret = vfprintf(stream, format, args);
|
||||
va_end(args);
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define fprintf(...) __sdl_logged_fprintf(__VA_ARGS__)
|
||||
|
||||
#endif
|
||||
|
||||
Submodule project/jni/application/hid-pc-keyboard/src updated: e019e1193e...592aab4151
@@ -350,7 +350,7 @@ Quick guide to debug native code
|
||||
================================
|
||||
|
||||
You need compile your app with debug enabled to be able to debug native code:
|
||||
./build.sh debug
|
||||
./build.sh debug
|
||||
To debug your application - launch it, go to "project" dir and launch command
|
||||
ndk-gdb
|
||||
then you can run usual GDB commands, like:
|
||||
@@ -364,6 +364,10 @@ You can also debug by adding extensive logs to your app:
|
||||
__android_log_print(ANDROID_LOG_INFO, "My App", "We somehow reached execution point #224");
|
||||
and then watching "adb logcat" output.
|
||||
|
||||
Android does not print app stdout/stderr streams to logcat, so printf() will not work,
|
||||
but you can redefine printf() and fprintf(stderr) in your app to write to Android log by adding this to AppCflags:
|
||||
-include jni/application/android_debug.h
|
||||
|
||||
If your application crashed, you should use following steps:
|
||||
|
||||
1. Gather the crash report from "adb logcat" - it should contain stack trace, if it does not then you're unlucky,
|
||||
|
||||
Reference in New Issue
Block a user