トラブルシューティング

Thing の解説の最後に、トラブルシューティングの方法をまとめておきます。

Thing-IF SDK では、各機能を実行する際の内部情報をログ出力できます。ログ出力に使用する関数は、ユーザープログラムから指定できるため、画面出力以外にも様々な出力先を選択できます。Linux のリファレンス実装では、vfprintf() を使ってログを画面に出力するように実装しています。

ログ出力先を変更するには、リファレンス実装で logger_cb_impl として実装されている関数を調整してください。

デフォルトでは、ログ出力はオフに設定されています。ログ出力をオンにするには、Thing-IF SDK のビルド時に DEBUG シンボルを定義して make を実行します。

$ make DEBUG=1

出力された libkiithingifsdk.so を Hello Thing-IF に組み込んで実行すれば、以下のように内部情報が出力されます。

file:kii/kii-core/kii_core.c, line:466 request: POST https://api-jp.kii.com/thing-if/apps/11111111/onboardings HTTP/1.1
host:api-jp.kii.com
x-kii-appid:11111111
x-kii-appkey:22222222222222222222222222222222
x-kii-sdk:sn=tic;sv=0.9.1
content-type:application/vnd.kii.OnboardingWithVendorThingIDByThing+json
authorization:bearer TL7PVlCO8ny_U2kEEq2j1Wk7wOCjvu3VTlAC4lsWqg
content-length:106

{"vendorThingID":"1111","thingPassword":"DEF456","thingType":"HelloThingIF-SmartLED","thingProperties":{}}
file:kii/kii-core/kii_core.c, line:147 socket state: 0
file:kii/kii-core/kii_core.c, line:147 socket state: 1
file:kii/kii-core/kii_core.c, line:147 socket state: 2
file:kii/kii-core/kii_core.c, line:147 socket state: 2
file:kii/kii-core/kii_core.c, line:147 socket state: 3
file:kii/kii-core/kii_core.c, line:147 socket state: 3
file:kii/kii-core/kii_core.c, line:147 socket state: 3
file:kii/kii-core/kii_core.c, line:147 socket state: 3
file:kii/kii-core/kii_core.c, line:147 socket state: 4
file:kii/kii-core/kii_core.c, line:474 response core: 200, response body: {
  "accessToken" : "eeHHSmFfZ_reK0gY2E6b87maVph_YRaTyws5pENTQG0",
  "thingID" : "th.727f20a0a022-ee1a-61b1-1f82-0a8c8aeb",
  "mqttEndpoint" : {
    "installationID" : "apm83n9esjgab9tpx95wvwtxb",
    "username" : "11111111-NA6uA7OiaOtEC0Jr52xIl4a",
    "password" : "HjCanzgoIIJuazawzTWlkVOzdkNSBcOtnFBLFyMopjzIkuHvSmhOvLJiRmdHJqub",
    "mqttTopic" : "piGkFeBEjaxNBZOocPMzNL3",
    "host" : "jp-mqtt-13915c439c5e.kii.com",
    "portTCP" : 1883,
    "portSSL" : 8883,
    "portWS" : 12470,
    "portWSS" : 12473,
    "ttl" : 2147483647
  }
}

出力される情報には、Thing-IF SDK の実行位置のソースファイル名と行番号、そのときの詳細情報が含まれています。

ソースファイルは、Thing-IF SDK のビルド時に使用したソースディレクトリを参照してください。Thing-IF SDK はオープンソースのため、SDK の内部で実行されている処理を直接確認することができます。

デバッグ情報には、ネットワークアクセスの際のリクエストとレスポンスが含まれています。これは、Thing-IF SDK の REST API の仕様に基づいています。たとえば、上の例は 初期登録 の REST API の仕様に従っています。

Thing のプログラムから原因不明のエラーが出力された場合は、この方法によって詳細を確認しながらデバッグすることができます。


次は...

最後に全体のまとめとして、次のステップへのヒントを示します。

次のステップへのヒント に移動してください。