Rubyは拡張ライブラリをかなり書きやすいとは言え(もう全部VALUEとか、 Cの型と相互に変換する方法が充実してるとか、GCのとことか)、しかし、やはりデバッグが辛い。segvすればまだわかりやすいのだが、StringValueCStrで「ヌル文字が含まれています」とか言われるとかなり辛い。←イマココ!
なんかgdb --argsで起動してbreak rb_raiseしてrunしてbtすりゃいいらし。
しかしJNIでDestroyしちゃいけない気がする。Linuxだけか?取り急ぎとはいえ拙すぎるコードだが、どうにも初回しかVMの作成に成功しない。
#include <jni.h> int main(char* argv) { JavaVM *jvm1, *jvm2, *jvm3, *jvm4, *jvm5; JNIEnv *env1, *env2, *env3, *env4, *env5; JavaVMInitArgs vm_args; /* JDK/JRE 6 VM initialization arguments */ JavaVMOption options[1]; jint res; options[0].optionString = "-Djava.class.path="; vm_args.version = JNI_VERSION_1_6; vm_args.nOptions = 1; vm_args.options = options; vm_args.ignoreUnrecognized = 0; printf("%d", (res = JNI_CreateJavaVM(&jvm1, (void**)&env1, &vm_args))); if (res == JNI_OK) jvm1[0]->DestroyJavaVM(jvm1); printf("%d", (res = JNI_CreateJavaVM(&jvm2, (void**)&env2, &vm_args))); if (res == JNI_OK) jvm2[0]->DestroyJavaVM(jvm2); printf("%d", (res = JNI_CreateJavaVM(&jvm3, (void**)&env3, &vm_args))); if (res == JNI_OK) jvm3[0]->DestroyJavaVM(jvm3); printf("%d", (res = JNI_CreateJavaVM(&jvm4, (void**)&env4, &vm_args))); if (res == JNI_OK) jvm4[0]->DestroyJavaVM(jvm4); printf("%d", (res = JNI_CreateJavaVM(&jvm5, (void**)&env5, &vm_args))); if (res == JNI_OK) jvm5[0]->DestroyJavaVM(jvm5); }
% gcc -I/usr/java/default/include -I/usr/java/default/include/linux -g jnitest.c /usr/java/default/jre/lib/i386/server/libjvm.so % LD_LIBRARY_PATH=/usr/java/default/jre/lib/i386/server/ gdb ./a.out
0-1-1-1-1
Bellicose from Chase Rees on Vimeo.
its beauty.
なんかちょっと毛色が違うね。西海岸的。
東京なう。4月には帰る予定。
@kisと@tagomorisと@neanderと@@toru_inoueと横浜で酒のんだ。各駅停車だと横浜遠いなという印象(終電はなかった)。
覚えてる範囲で書く。
新木場ウェストコースト、Hostess Club Weekender 2014/2のday2だけ。Warpaintを見に行く。Warpaintかわいすぎる。WarpaintとBuke And GaseのCDを買った。KING KRULE超かっこいいし声セクシーっすね。
川崎CITTA'のDUBAI9×tieemo、宇宙コンビニを見に。johannとI LOVE YOU...OK?が印象に残った。ALTだけヒップホップで浮いてた。トラックを生で作ってたし面白かったけど、浮いてた。ポスロの幅が広すぎてどうも、という感じ。ハイスイノナサも見たかったんだけど時間遅かったんでパスった。ちょい後悔だけど洗濯せなあかんかったし。
城南島と新横は行った。運動不足すぎる。