
[英]Is there any way of preventing application from crashing when heap is corrupted? - C programing language
[英]App crashing when linking Discord C SDK and not displaying any logs
我正在开发一个使用 Discord SDK(用 C 语言编写)的 macOS 应用程序。 After I import it into another C file that encapsulates all of the logic to initialise it, and then link this C file to my Swift project, the app crashes upon launch, and no errors or crash information is displayed on the output. 我曾尝试将相同的 C 文件导入用纯 C 编写的命令行应用程序,并且效果很好。 我想知道是否有任何方法可以检查从 C 代码输出的错误日志,以及在哪里可以找到它。
这是我正在调用的 C function 的代码,崩溃发生在 DiscordCreate() 上:
void initializeDiscord() {
struct Application app;
memset(&app, 0, sizeof(app));
struct IDiscordActivityEvents activities_events;
memset(&activities_events, 0, sizeof(activities_events));
struct DiscordCreateParams params;
DiscordCreateParamsSetDefault(¶ms);
params.client_id = CLIENT_ID;
params.flags = DiscordCreateFlags_Default;
params.event_data = &app;
params.activity_events = &activities_events;
int ver = DISCORD_VERSION;
DiscordCreate(ver, ¶ms, &app.core);
app.activities = app.core->get_activity_manager(app.core);
app.application = app.core->get_application_manager(app.core);
app.activity_manager = app.core->get_activity_manager(app.core);
struct DiscordActivity activity;
memset(&activity, 0, sizeof(activity));
strcpy(activity.details, "Test");
strcpy(activity.state, "Test");
strcpy(activity.assets.large_text, "test");
strcpy(activity.assets.large_image, "test");
activity.timestamps.end = (unsigned)time(NULL) + 120;
app.activity_manager->update_activity(app.activity_manager, &activity, callbackData, callback);
for (;;) {
app.core->run_callbacks(app.core);
usleep(16 * 1000);
}
}
事实证明,禁用应用沙箱解决了这个问题。 这可能是 Discord SDK 试图做沙盒不允许的事情的问题。 仍然对 Xcode 没有显示任何警告、错误或任何 output 表示这是问题所在感到沮丧,但至少它现在正在工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.