我想調試一個沒有可用源代碼的程序,我需要看看它存儲在std :: string中的內容。我一直在谷歌搜索和看這裏,我已經找到了一些關於輸出STL容器的信息,但它都是指變量,沒有源或調試信息,我擁有的是類數據的內存偏移量。有沒有辦法做到這一點?如何檢查GDB中的std :: string沒有源代碼?
12
A
回答
22
每std::string
實現有一個指向其中的原始字符的指針。對於g++ 4.x
,該指針在偏移量0
處插入字符串。
如果您知道該字符串駐留在例如0x7fffffffda88
,然後
print *(char**)0x7fffffffda88
是你需要的。
5
也許最簡單的方法是使用c_str
方法,如:
print myStr.c_str()
相關問題
- 1. 如何在gdb中檢查boost :: ptr_deque <std::string>?
- 2. 用gdb調試沒有源代碼
- 3. GDB抱怨沒有源代碼可用
- 4. 如何檢查imageview中的源代碼?
- 5. GDB與MySQL的源代碼
- 6. 如何在gdb postmortem中訪問像std :: string這樣的STL類?
- 7. 在模板代碼中未檢測到std :: string的重載
- 8. gdb沒有顯示正確的源代碼-l
- 9. GDB - 調試外部庫,有源代碼
- 10. 如何檢查打印源代碼
- 11. 如何檢查出源代碼
- 12. 如何檢查Chrome插件源代碼?
- 13. gdb源代碼breakpoint.c - 0x4e 0x4f
- 14. GDB:看到源代碼行?
- 15. 在gdb中包含malloc.c的源代碼?
- 16. 列出源代碼中的gdb錯誤
- 17. 如何在Java中檢索「檢查的源代碼」(Google chrome)?
- 18. EKEventStore中沒有源代碼
- 19. 格式JSON代碼到的std :: string
- 20. 從gdb設置std :: string變量值?
- 21. SSIS包源代碼檢查
- 22. Android Studio中的源代碼檢查點
- 23. 如何檢查std :: string,如果它的確是一個整數?
- 24. 的std ::列表<std::string> ::迭代器的std :: string
- 25. 如何確定沒有訪問源代碼的Oracle查詢?
- 26. 如何強制GDB執行沒有符號的代碼
- 27. anotherString.value如何在Java中的類String的源代碼中工作?
- 28. 如何拼寫檢查我的源代碼中的字符串
- 29. 如何使用icc編譯器檢查gdb中std :: vector的內容?
- 30. 如何查看totalview中的源代碼?
謝謝你,這工作。我想知道的一件事是我如何在自己身上找到類似的東西。即給出類「X」的源代碼,我怎麼才能找出該類中的字段的位置?我現在能想到的唯一方法是編譯我自己的測試應用程序,並檢查我給出的指針(使用offsetof等)。 – PeterBelm
找出偏移量的最快方法實際上是在調試模式下使用給定的類編譯一個簡單的測試程序,並檢查GDB中的偏移量和類佈局。這正是我所做的回答你的問題;-) –
另外,如果像clang的libC++一樣使用SSO,那麼對於小字符串就沒有這樣的指針。 ;-) – Deduplicator