- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
#include <iostream>
#include <cxxabi.h>
#include <typeinfo>
int main(void)
{
uint8_t i = 63;
int status;
std::cout << i << std::endl;
char *realname = abi::__cxa_demangle(typeid(i).name(), 0, 0, &status);
std::cout << "Real type of uint8_t is: " << realname << std::endl;
delete (realname);
std::cout << (unsigned int)i << std::endl;
return 0;
}
> ?
> Real type of uint8_t is: unsigned char
> 63
А что не так?
Так и представляю:
- А может запилим 1байтные инты, а?
- Да нафиг. Сами, из чаров прикастуют...
Да, ступил, символ "?" действительно выглядит подозрительно для "uint8_t". Плюсую топик.
P.S. Сказалась совместимость с Си, как всегда не в лучшую сторону.
P.P.S. Кроме стримов практически нет перегрузок, которым нужно отличать unsigned char от uint8_t, поэтому проблема не так и ужасна, как кажется.
Returns:
A pointer to the start of the NUL-terminated demangled name, or NULL if the demangling fails. The caller is responsible for deallocating this memory using free.
Вы наверное имели в виду зачем сделали мангл?
Ну как-то же надо сделать, чтобы различные с++ функции имели различные имена при экспорте. Написать туда что-то красивое в духе "void main(int argc, char **argv)" все равно не получится из-за ограничений по именованию, налагаемых компоновщиком, который переделывать нежелательно. Читать всякие TvoidFmainTintVargcTPPcharVargv вам все равно будет неприятно, поэтому они немного ужали запись, сократив стандартные типы до одной буквы...
стектрейсы - это в дебаге должно только работать, нет? при этом зависеть от формата этой дебажной информации?
меня в релизе спасают только ручками сделанные логи разной степени подробности, а таким передовым технологиям мы не обучены
Так что придется оставить стектрейсы жавоёбам, и продолжать юзать логи разной степени подробности...
В релизе конечно. А так программа упала, прислала инфу о падении на сервер вместе с стектрейсом и я её поправил. Пользователь обновил программу с того же сервера.
http://article.gmane.org/gmane.comp.lib.boost.devel/209982
в основной ветке нет его, да и даже в списке реджекнутых не вижу
http://www.boost.org/community/review_schedule.html
http://ideone.com/n6LLqC
Если скомпилить с -rdynamic, выдает довольно красивый трейс:
P.S. Это говнишко достойно отдельного треда?
Привет хедергуарду #pragma once и я сильно не уверен, но возможно и ODR
С неймспейсом С просто грязный хак, потому что хотелось назвать класс backtrace. Я знаю, что это очень нехороший поступок, и раскаиваюсь в этом.
back_trace
или
bormand::back_trace
* Пофиксен баг с выводом экцепшенов без бектрейса
* Причесаны хидеры
P.S. Лишний раз убеждаюсь, что второпях код писать вредно.
http://stackoverflow.com/questions/77005/how-to-generate-a-stacktrace-when-my-gcc-c-app-crashes