[英]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-7和https://sourceware.org/gdb/onlinedocs/gdb/Reverse-Execution.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.