我被我的应用程序困住,因为我无法调试,因为它是多线程的并且因错误SIGSEGV而崩溃.我从LogCat那里获得了很多信息,它在我的本地库中提供了地址.如果我可以将这些地址转换为我的代码,将会很有帮助.
有没有人知道如何使用android-ndk提供的addr2line?
只是想知道是否有人知道如何从Android中找出本机代码中的内存泄漏.谷歌搜索提供了很多解决方案,但没有一个是完整的.如果有人知道怎么做,请告诉我.
java-native-interface android memory-leaks memory-management android-ndk
编译我的应用程序时遇到问题,这是受位图等离子的启发.我在打电话
if ((ret = AndroidBitmap_getInfo(env, bitmap, &info)) < 0) {
LOGE("AndroidBitmap_getInfo() failed ! error=%d", ret);
return;
}
if (info.format != ANDROID_BITMAP_FORMAT_RGB_565) {
LOGE("Bitmap format is not RGB_565 !");
return;
}
if ((ret = AndroidBitmap_lockPixels(env, bitmap, &pixels)) < 0) {
LOGE("AndroidBitmap_lockPixels() failed ! error=%d", ret);
}
/*****code here***********/
AndroidBitmap_unlockPixels(env, bitmap);
Run Code Online (Sandbox Code Playgroud)
我在源文件中包含了android/bitmap.h.我在ubuntu 10.10上使用android-ndk-r5b和sdk-9.
我收到了一个错误
/home/user5432/workspace/bitmapproj/obj/local/armeabi/objs-debug/mybitmap.o : In function Java_com_example_plasma_PlasmaView_renderPlasma
"undefined reference to AndroidBitmap_getInfo"
"undefined reference to AndroidBitmap_lockPixels"
"undefined reference to AndroidBitmap_unlockPixels"
Run Code Online (Sandbox Code Playgroud)
问题出在调试代码上.但是问题是什么?任何人都有答案吗?
是否有任何机制通过JNI从C发送异步事件/信号到Java或反之?我需要捕获从C到Java的信号/事件.
当我必须插入很少的元素时,哪种方式可以更快地排队和出列,是否数组比链表更好?
我需要插入一些元素,我必须从队列中删除并读取已删除的元素.如果是数组,我可能每次删除元素时都要修改索引.插入和删除也可能同时发生.
从下面的案例中哪个更好?
typedef struct{
mylist list;
struct mylistQ *next;
}mylistQ;
Run Code Online (Sandbox Code Playgroud)
数组代码
static mylist myListQ[QUEUESIZE+1];
int qLast = 0;
void enqueue_element(mylist qItem)
{
myListQ[qLast] = qItem;
qLast++;
}
mylist dequeue_element()
{
retryq:
if(qLast >0) {
mylist qReturn = myListQ[0];
int i;
for (i = 0; i < qLast - 1; i++){
myListQ[i] = myListQ[i + 1];
}
qLast--;
return qReturn;
}
else {
goto retryq;
}
}
Run Code Online (Sandbox Code Playgroud)
链接列表
int qLast = 0;
mylistQ *headElement = NULL;
mylistQ *tailElement = NULL; …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用霓虹灯支持编译ffmpeg for android,但我得到以下汇编程序错误.如果有人对此有任何疑问,请告诉我?
/home/user1/android-ndk-r5b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc -MMD -MP -MF /home/user1/workspace/FFMPEGFinal/obj/local/armeabi-v7a/objs/ffmpeg/libavcodec/arm/rdft_neon.o.d.org -fpic -ffunction-sections -funwind-tables -fstack-protector -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -Wno-psabi -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -O2 -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 -I/home/user1/workspace/FFMPEGFinal/jni/SDL/include -I/home/user1/workspace/FFMPEGFinal/jni -DANDROID -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DPIC -DCMP_HAVE_NEON -DCMP_HAVE_VFP -fasm -Wa,--noexecstack -O2 -DNDEBUG -g -I/home/user1/android-ndk-r5b/platforms/android-8/arch-arm/usr/include -c /home/user1/workspace/FFMPEGFinal/jni/libavcodec/arm/rdft_neon.S -o /home/user1/workspace/FFMPEGFinal/obj/local/armeabi-v7a/objs/ffmpeg/libavcodec/arm/rdft_neon.o && rm -f /home/user1/workspace/FFMPEGFinal/obj/local/armeabi-v7a/objs/ffmpeg/libavcodec/arm/rdft_neon.o.d && mv /home/user1/workspace/FFMPEGFinal/obj/local/armeabi-v7a/objs/ffmpeg/libavcodec/arm/rdft_neon.o.d.org /home/user1/workspace/FFMPEGFinal/obj/local/armeabi-v7a/objs/ffmpeg/libavcodec/arm/rdft_neon.o.d
/home/user1/workspace/FFMPEGFinal/jni/libavcodec/arm/rdft_neon.S: Assembler messages:
/home/user1/workspace/FFMPEGFinal/jni/libavcodec/arm/rdft_neon.S:54: Error: bad instruction `vld1.32 {d0},[r0,:64]!'
/home/user1/workspace/FFMPEGFinal/jni/libavcodec/arm/rdft_neon.S:55: Error: bad instruction `vld1.32 {d1},[r1,:64],r8'
/home/user1/workspace/FFMPEGFinal/jni/libavcodec/arm/rdft_neon.S:56: Error: bad instruction `vld1.32 {d4},[r2,:64]!'
/home/user1/workspace/FFMPEGFinal/jni/libavcodec/arm/rdft_neon.S:57: Error: bad instruction `vld1.32 {d5},[r3,:64]!'
/home/user1/workspace/FFMPEGFinal/jni/libavcodec/arm/rdft_neon.S:58: …Run Code Online (Sandbox Code Playgroud) 可能重复:
C/C++:GOTO比WHILE和FOR更快吗?
我知道这已被问过很多次,但我从来没有得到满足我用Google搜索满足的答案.
我在某处读到每个循环(for/while/do-while/untill)最终将在内部转换为goto语句,这是真的吗?
如果没有,根据性能明智,哪个是最好的循环使用?如果有人知道,请告诉我?
我正在使用ES6.假设我有一个如下所示的排序数组.不使用lodash或除jquery之外的任何其他库.
sortedArray = [
{a: "a", b: 2, c: "something1"},
{a: "a1", b: 3, c: "something2"},
{a: "a2", b: 4, c: "something3"},
{a: "a3", b: 5, c: "something4"},
{a: "a4", b: 6, c: "something5"},
{a: "a5", b: 7, c: "something6"}
]
Run Code Online (Sandbox Code Playgroud)
是否有一种有效的方法来找出其键值b值最接近所提供值的对象.
如果我提供值3.9,它应该返回{a: "a2", b: 4, c: "something3"}.
任何帮助表示赞赏.
我正在尝试在/ data/local/tmp目录中创建一个临时文件.路径是正确的,我也添加了WRITE_EXTERNAL_PERMISSION权限.但是我仍然从本机代码中得到一个错误,指出无法创建该文件.
代码如下.
File *file = fopen("mytxt.txt", "/data/local/tmp/");
Run Code Online (Sandbox Code Playgroud)
返回值文件始终包含空值,并且不创建任何文件.还有什么需要做的吗?
是否有任何其他临时文件夹,我可以在Android中用于此目的?
感谢您提供的任何帮助.
我在使用JNI在Java和C之间共享流时遇到问题.我试图从C调用Java方法,但是nosuchmethodfound当我想要获取时,我得到了一个异常GetObjectMethodID.
C代码:
jclass cls = (*env)->GetObjectClass(env, obj);
jmethodID aMethodID = (*env)->GetMethodID(env, cls, "callbackmethod", "(I)V");
if (aMethodID == 0) {
log("Unable to get methodID"); //Always getting aMethodID as 0
}
int myvar = 7;
(*env)->CallVoidMethod(env, obj, aMethodID, myvar);
Run Code Online (Sandbox Code Playgroud)
Java代码:
public class myclass extends activity {
private void callbackmethod(int i) {
Log.d("Tag", "In Java code");
}
-------
more code
}
Run Code Online (Sandbox Code Playgroud)
现在我总是收到错误Ljava/lang/NoSuchMethodError;: callbackmethod.
一切都很好,但我的代码不起作用.问题是什么?
我正在尝试使用调试选项集编译我的应用程序.我已经包含了android/bitmap.h文件.所有东西都可以很好地编译android/bitmap.h文件中的方法,但链接器存在问题
/home/user5432/workspace/bitmapproj/obj/local/armeabi/objs-debug/mybitmap.o : In function Java_com_example_plasma_PlasmaView_renderPlasma
"undefined reference to AndroidBitmap_getInfo"
"undefined reference to AndroidBitmap_lockPixels"
"undefined reference to AndroidBitmap_unlockPixels"
Run Code Online (Sandbox Code Playgroud)
谁能告诉我这是什么问题?
android ×7
android-ndk ×6
c ×3
java ×2
addr2line ×1
arrays ×1
assembly ×1
bitmap ×1
deque ×1
ecmascript-6 ×1
events ×1
ffmpeg ×1
for-loop ×1
javascript ×1
linked-list ×1
linker ×1
loops ×1
memory-leaks ×1
native-code ×1
neon ×1
performance ×1
signals ×1
while-loop ×1