Python
如何在 VSCode 中調試 Brownie?
如何在 Visual Studio Code 中調試 Brownie 程序?我想應該有一些 launch.json 創建但不知道是哪一個。
您可以通過幾種不同的方式在 brownie 中進行調試。
使用內置工具。
Brownie 有多種工具,例如檢查事務跟踪、還原消息和呼叫跟踪。您可以使用其中任何一種來查看交易成功/未通過的原因。
例如:
>>> tx.call_trace() Call trace for '0xd31c1c8db46a5bf2d3be822778c767e1b12e0257152fcc14dcf7e4a942793cb4': SecurityToken.transfer 0:5198 (0xea53cB8c11f96243CE3A29C55dd9B7D761b2c0BA) └─SecurityToken._transfer 170:5198 ├─IssuingEntity.transferTokens 608:4991 (0x40b49Ad1B8D6A8Df6cEdB56081D51b69e6569e06) │ ├─IssuingEntity.checkTransfer 834:4052 │ │ ├─IssuingEntity._getID 959:1494 │ │ │ └─KYCRegistrar.getID 1186:1331 (0xa79269260195879dBA8CEFF2767B7F2B5F2a54D8) │ │ ├─IssuingEntity._getID 1501:1635 │ │ ├─IssuingEntity._getID 1642:2177 │ │ │ └─KYCRegistrar.getID 1869:2014 (0xa79269260195879dBA8CEFF2767B7F2B5F2a54D8) │ │ ├─IssuingEntity._getInvestors 2305:3540 │ │ │ └─KYCRegistrar.getInvestors 2520:3483 (0xa79269260195879dBA8CEFF2767B7F2B5F2a54D8) │ │ │ ├─KYCBase.isPermitted 2874:3003 │ │ │ │ └─KYCRegistrar.isPermittedID 2925:2997 │ │ │ └─KYCBase.isPermitted 3014:3143 │ │ │ └─KYCRegistrar.isPermittedID 3065:3137 │ │ └─IssuingEntity._checkTransfer 3603:4037 │ ├─IssuingEntity._setRating 4098:4162 │ ├─IssuingEntity._setRating 4204:4268 │ ├─SafeMath32.add 4307:4330 │ └─IssuingEntity._incrementCount 4365:4770 │ ├─SafeMath32.add 4400:4423 │ ├─SafeMath32.add 4481:4504 │ ├─SafeMath32.add 4599:4622 │ └─SafeMath32.add 4692:4715 └─SecurityToken._checkTransfer 5071:5198
採用
pdb
執行測試時,您可以將通常傳遞給 pytest 的任何標誌傳遞給 pytest,並以與調試 python 相同的方式進行調試。
例如,如果您有如下測試:
def test_something(): transaction = contract.do_something({"from":account}) assert transaction == 1
您可以對其進行測試並進入控制台,例如:
brownie test -k test_something --pdb
如果出現錯誤,它會將您置於最後出現錯誤的控制台中,您只需執行 python 命令即可查看發生了什麼。這是(在我看來)最好的方法之一。
使用控制台
最後一種方法是只使用布朗尼控制台。在核仁巧克力餅殼中,您可以做“任何事情”。
brownie console
並嘗試自己執行和調試。