Articles of отладка

Преобразовать backtrace libc в номер строки источника

У меня есть приложение MPI, в котором сочетаются как источники C, так и Fortran. Иногда он падает из-за ошибки памяти, но мне трудно найти ошибку (она находится где-то в чьем-то коде, который в настоящий момент я не очень хорошо разбираюсь). Мне еще не удалось поймать его с помощью gdb, но иногда выводится glibc backtrace, как […]

Аналог IsBadReadPtr на Unix

Есть ли функция, аналогичная IsBadReadPtr в Unix? По крайней мере, некоторые функции IsBadReadPtr? Я хочу написать процедуру, которая будет реагировать, если что-то плохое происходит с процессом (например, SIGSEGV ) и восстановить некоторую информацию. Но я хочу проверить указатели, чтобы убедиться, что данные не повреждены и посмотреть, можно ли их безопасно получить. В противном случае сама […]

Как сделать gdb распечатать все значения в шестнадцатеричном режиме?

По умолчанию gdb всегда печатает / отображает все переменные / аргументы в базе 10. Есть ли способ просить gdb всегда использовать базу 16 при печати чего-либо (и возвращаться к настройкам по умолчанию, когда мне это не нужно)? Я знаю, что его можно печатать, поставляя аргумент «/ x» для печати / отображения, но я не хочу […]

Включить исходный код malloc.c в gdb?

Как включить / просмотреть исходный код malloc в gdb? Я хочу выполнить пошаговое выполнение в gdb и перейти в исходный код malloc.c при malloc.c любой из функций malloc. В настоящее время gdb говорит: malloc.c: No such file or directory. Этот парень столкнулся с одной и той же проблемой, но они не упоминают решение, то есть […]

Отладчик показывает неправильное значение указателю

У меня есть следующий код: #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; char str[] = “this.is.a.test”; char str2[] = “this.is.another.test”; typedef struct { size_t count; char** strings; } Tokens; Tokens Tokenize(char* String, char Split) { Tokens t; t.count = 1; […]

Почему некоторые символы отладки отсутствуют и как их отслеживать?

В настоящее время я отлаживаю модуль Kernel, и для этой цели я построил все kernel ​​с отладочной информацией (производит kallsyms и т. Д.). Когда я пробую nm my_module.ko , я получаю список символов, включенных в мой модуль. Все в порядке, за исключением того, что некоторые символы не видны, поскольку они не отображаются в списке символов. […]

Как справиться с ошибкой сегментации с GDB при определенных обстоятельствах?

Я написал программу на Linux для обработки большого количества данных. В большинстве случаев он работал нормально, но при выполнении задания я столкнулся с ошибкой ошибки сегментации. Потому что программа работает нормально с другими данными, поэтому я не знаю, как справиться с этой проблемой. И, кстати, как получить значение переменной при segfault? вот вывод gdb: Program […]

Странное поведение при вызове abort ()

Мне нужно написать унитарные тесты, чтобы обернуть системный вызов abort (). Вот fragment кода: #include #include #include extern void __real_abort(void); extern void * __real_malloc(int c); extern void __real_free(void *); void __wrap_abort(void) { printf(“=== Abort called !=== \n”); } void * __wrap_malloc(int s) { void *p = __real_malloc(s); printf(“allocated %d bytes @%p\n”,s, (void *)p); return p; […]

Странное поведение в LLDB при печати структурного элемента двойного типа

В некоторых iOS-кодах у меня есть C struct ivar для объекта. Один из членов этой структуры имеет тип double . Если I, в рамках метода, назначить этот член struct , отладчик сообщает ложные значения для значения этого элемента struct когда я печатаю сама struct (как и представление списка переменных), но когда я печатаю элемент struct […]

обнаружение утечки памяти в C

Я знаю, что это вряд ли новый вопрос, но я ничего не нашел в другом месте. У меня есть программа на C, которая постоянно ест память во время ее запуска. Я использую команду «free» для ее отслеживания, и я вижу, что количество доступной памяти уменьшается до тех пор, пока оно выполняется, чего не должно происходить. […]

Intereting Posts
Печать строки C в обратном направлении без использования указателей? Редактирование команды бинарного вызова ELF Как определить, нажата ли клавиша удаления на клавиатуре? Любой риск использования переменных float в качестве счетчиков циклов и их дробного приращения / уменьшения для условий без «==»? чтение видео из файла opencv Знает ли кто-нибудь о функции atolf c? Как передать несколько команд, используя popen в C? Как убедить avr-gcc, что позиция памяти глобального байтового массива является константой long long – 8 байтов, но я получаю целочисленное переполнение? Связать общую библиотеку gcc без файла? Инициализация статических переменных в C Как сортировать функции в C? «Предыдущее неявное объявление функции было здесь» sizeof (void) равно 1 в C? xmlParseFile vs xmlReadFile (libxml2) Возможно ли написать функцию, которая может изменить строку без использования строки буфера?