星号停滞订阅

时间:2017-03-15 09:12:49

标签: c asterisk

我在apps/文件夹中添加了一个自定义模块,用于注册到ast_channel_topic_all主题。遗憾的是,每次加载模块时星号都会出现段错误。

#include "asterisk.h"
#include "asterisk/module.h"
#include "asterisk/json.h"
#include "asterisk/stasis.h"
#include "asterisk/stasis_channels.h"
#include "asterisk/manager.h"

ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#define AST_MODULE "stasis_test"

static struct stasis_subscription *queue_stasis_message_sub;

static void queue_subscribe_callback(void *data, struct stasis_subscription    *sub, struct stasis_topic *topic, struct stasis_message *message){

    struct ast_channel_blob *payload = stasis_message_data(message);
    // ...
}

static int unload_module(void) {

    stasis_unsubscribe_and_join(queue_stasis_message_sub);

    return 0;
}

static int load_module(void) {

    queue_stasis_message_sub = stasis_subscribe(ast_channel_topic_all(),     queue_subscribe_callback, NULL);

    if ( !queue_stasis_message_sub ) {
        unload_module();
        return AST_MODULE_LOAD_DECLINE;
    }

    return AST_MODULE_LOAD_SUCCESS;
}

AST_MODULE_INFO(
    ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, AST_MODULE,
    .load = load_module,
    .unload = unload_module
);

导致此错误的原因是什么?期待你的回复。 顺便说一句,我使用的星号版本是13.10。

1 个答案:

答案 0 :(得分:0)

这个问题是调试问题。

  1. 使用调试符号编译星号
  2. 在asterisk.conf中启用核心转储
  3. 启动星号。
  4. 使用GDB检查核心转储
  5. https://wiki.asterisk.org/wiki/display/AST/Getting+a+Backtrace