C: Ошибка сегментации 11 только в терминале, а не в отладчике

Не сериализуйте FormData с POST на сервере. Сделайте это:

this.uploadFileToUrl = function(file, title, text, uploadUrl){
    var payload = new FormData();

    payload.append("title", title);
    payload.append('text', text);
    payload.append('file', file);

    return $http({
        url: uploadUrl,
        method: 'POST',
        data: payload,
        //assign content-type as undefined, the browser
        //will assign the correct boundary for us
        headers: { 'Content-Type': undefined},
        //prevents serializing payload.  don't do it.
        transformRequest: angular.identity
    });
}

Затем используйте его:

MyService.uploadFileToUrl(file, title, text, uploadUrl).then(successCallback).catch(errorCallback);
0
задан Kees de Groot 18 January 2019 в 15:37
поделиться

1 ответ

Разница между работой в отладчике и без него может быть связана с отключением отладчика ASLR. Это может скрыть проблему, когда вы пытаетесь ее отладить.

Попробуйте отменить это. кажется , что в LLDB это должно быть сделано командой

settings set target.disable-aslr false

, которая должна отменить отключение ASLR. В GDB это будет

set disable-randomization off

Не забудьте перезапустить программу под вашим отладчиком (без перезапуска отладчика!), Чтобы этот параметр вступил в силу. В GDB это команда run, нечто подобное должно быть в LLDB.

0
ответ дан Ruslan 18 January 2019 в 15:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: