отладка в с? - PullRequest
       2

отладка в с?

1 голос
/ 01 мая 2011

Я обнаружил ошибку в моем приложении и показал некоторую информацию:

(trunk:29564): Gtk-CRITICAL **: IA__gtk_tree_store_clear: assertion `GTK_IS_TREE_STORE (tree_store)' failed

мой вопрос:

  • Что такое 29564? Это смещение стека в сегменте кода в приложении или в стеке памяти? или где это точно?
  • как я могу это отладить? на каком языке это (отладка) будет (C или asm)?

Ответы [ 2 ]

2 голосов
/ 01 мая 2011

Использовать GDB.

Это ошибки в приложении gtk +.

Вы должны передать параметры функции, а не foo(tree_store, ... ), вы должны указать как foo(GTK_IS_TREE_STORE(tree_store), ...)

1 голос
/ 01 мая 2011

Как сказал Ансид, нам нужно больше информации.Совершенно слепой, но иногда эффективный подход состоит в том, чтобы использовать grep -r в дереве исходных текстов для различных строк в сообщении об ошибке.Возможно, вы ищете функцию с именем IA__gtk_tree_store_clear, но затем вам нужно выяснить, кто вызывает ее с помощью чего-то, что не является хранилищем дерева ...

Если вы действительно хотите отладить исполняемое, выясните, каквключите отладочную информацию в сборке (например, получите флаг -g, переданный в gcc), а затем выполните команду gdb progname аргументы для запуска программы.Когда происходит сбой, используйте такие вещи, как команда обратной трассировки (ct), чтобы посмотреть на стек вызовов и выяснить цепочку событий, которые приводят к сбою.

РЕДАКТИРОВАТЬ: похоже, вам нужно поставитьточка останова, чтобы программа фактически не прерывалась, иначе у вас не будет стека вызовов для проверки.Поэтому вам нужно найти строку кода, на которой проверяется утверждение.Вы можете использовать условное выражение в точке останова, чтобы gdb останавливал программу только тогда, когда утверждение не выполнится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...