簡體   English   中英

我正在使用gdb調試程序,但出現分段錯誤

[英]I am debugging a program using gdb and I'm getting a segmentation fault

const char* text = str->text;

這行代碼是在gdb中產生錯誤的原因,它在顯示字符串的函數中。

Tokens* createTokens(String* str, char delimiter)
{
   int start_size = 1;
   Tokens* tokens = initTokens(start_size);
   int start = 0;
   cout << tokens->sz << endl;
   tokens->sz = 1;
   while (start < tokens->sz)
   {
      for(int i = 0; i < str->sz; i++)
      {
          int end = find(str, delimiter, start);
          str = substr(str, start, end);
          addToken(tokens, str);
          start = end;
          tokens->sz ++;
      }
   }


   return tokens;

我相信這段代碼就是錯誤的來源。 我不知道問題出在哪里。 我是入門級C ++入門課程的初學者,因此可以提供任何幫助。

從一開始就檢查您認為對一段代碼正確的所有內容。

在這種情況下,請檢查str的值,然后檢查str-> text。

我相信str設置為NULL。 您必須通過在程序的早期和較早點檢查其值來回溯。

如果幸運的話,您的gdb可以執行反向執行。 參見http://jayconrod.com/posts/28/tutorial-reverse-debugging-with-gdb-7https://sourceware.org/gdb/onlinedocs/gdb/Reverse-Execution.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM