0

状況:

職場でいくつかのコードのアップグレードに取り組んでいます。コードは、GMime に基づくプロセス用です。現在、GMime 2.2 を使用していますが、最近、GMime 2.4 を使用するようにコードをアップグレードしました。プロセスは正常に実行され、クラッシュしませんが、

GLib-GObject-CRITICAL **: g_object_unref: assertion G_IS_OBJECT (object)' failed

ときどき、プログラムが実行されているとき。

g_object_unref の呼び出しが失敗し、プログラムがクラッシュすることがあります。これをデバッグしようとしていますが、残念ながら、このプログラムを作成した人はテストやデバッグ機能を追加していません。

古いコードに戻らなければならないときに、デバッグ情報を埋め込んだり、テスト フレームワークをセットアップしたりすることがいかに重要かを理解しています。純粋な C または純粋な C++ でこれをセットアップする方法は知っていますが、他のライブラリが放り込まれるとすぐに、非常に難しくなります。

私の問題は次のとおりです。

GLib または GObject に依存するプログラムを使用して、デバッグ コードやテスト システムを効果的にセットアップするにはどうすればよいですか?

私の質問は次のとおりです。

  1. コードで何が起こっているかを知るにはどうすればよいですか? 「信号」を聞く必要がありますか?これらの信号を設定するにはどうすればよいですか?
  2. g_object_unrefreturnのような関数void。では、これらの機能に関連するデバッグ情報を出力するにはどうすればよいでしょうか。
  3. GObject には「プロパティ/クラス メンバー」がありますか? エラー情報が埋め込まれている GLib に関して、これを表す適切な用語がわかりません。
  4. (関連していますが、トピックから少し外れています) GLib や node.js ecetera などのライブラリには、次のような「広範な」ドキュメントがあります。

    function doSomethingThatShouldBeUsefulAndUnderstoodByAnyoneWhoReadsThis(WYSIWYG, FIY, BYOF, X, Y, Z) // this function does something that should be usefull and understood by anyone who reads the function this does something and can be called

    多くのプログラミング経験 (純粋な形式の言語を使用) を持っている人は、ほとんどのチュートリアルでドキュメントを参照するように指示されている場合、またはドキュメントそのものである場合に、ライブラリの頭または尾を作成する方法を教えてください。

  5. これに推奨されるチュートリアルはありますか?

私が見たサイト:

すべてのコメント、質問、提案は大歓迎です!

ありがとうございました。

4

1 に答える 1