Examples: query, "exact match", wildcard*, wild?ard, wild*rd
Fuzzy search: cake~ (finds cakes, bake)
Term boost: "red velvet"^4, chocolate^2
Field grouping: tags:(+work -"fun-stuff")
Escape special characters +-&|!(){}[]^"~*?:\ - e.g. \+ \* \!
Range search: properties.timestamp:[1587729413488 TO *] (inclusive), properties.title:{A TO Z}(excluding A and Z)
Combinations: chocolate AND vanilla, chocolate OR vanilla, (chocolate OR vanilla) NOT "vanilla pudding"
Field search: properties.title:"The Title" AND text
Back to post

Revisions 2

one year ago
Tal Kol
340 × 3 Administrator
How can you debug a TON smart contract in FunC and print logs or dump variables?
How can you debug a TON smart contract in FunC and print logs or dump variables?
The TVM has a special function for [dumping variables](https://ton.org/docs/#/func/builtins?id=dump-variable) in debug - `~dump` Run `~dump(variable_name);` to print a variable's contents. Run `~dump(12345);` to print the number `12345`. Example: ```clike () recv_internal(int msg_value, cell in_msg, slice in_msg_body) impure { ;; let's say I want to print the value of the variable msg_value ~dump(msg_value); } ``` Please note that this command will not run on mainnet, so do not deploy production contracts with it. My favorite way to test smart contracts locally is using [ton-contract-executor](https://github.com/Naltox/ton-contract-executor) - this awesome library run a local version of the TVM in web-assembly right inside Node.js, which is very convenient for writing JavaScript/TypeScript tests. To enable debug prints in ton-contract-executor, when you create your contract instance pass `debug: true` in SmartContractConfig and print the logs after interacting with the contract: ```js import { SmartContract } from "ton-contract-executor"; const contract = await SmartContract.fromCell(codeCell, dataCell, { debug: true // enable debug }); const send = await contract.sendInternalMessage(...); console.log(send.logs); // print the logs ```
The TVM has a special function for [dumping variables](https://ton.org/docs/#/func/builtins?id=dump-variable) in debug - `~dump` Run `~dump(variable_name);` to print a variable's contents. Run `~dump(12345);` to print the number `12345`. Example: ``` () recv_internal(int msg_value, cell in_msg, slice in_msg_body) impure { ;; let's say I want to print the value of the variable msg_value ~dump(msg_value); } ``` Please note that this command will not run on mainnet, so do not deploy production contracts with it. My favorite way to test smart contracts locally is using [ton-contract-executor](https://github.com/Naltox/ton-contract-executor) - this awesome library run a local version of the TVM in web-assembly right inside Node.js, which is very convenient for writing JavaScript/TypeScript tests. To enable debug prints in ton-contract-executor, when you create your contract instance pass `debug: true` in SmartContractConfig and print the logs after interacting with the contract: ```js import { SmartContract } from "ton-contract-executor"; const contract = await SmartContract.fromCell(codeCell, dataCell, { debug: true // enable debug }); const send = await contract.sendInternalMessage(...); console.log(send.logs); // print the logs ```
one year ago
Original
Tal Kol
340 × 3 Administrator
How can you debug a TON smart contract in FunC and print logs or dump variables?

The TVM has a special function for [dumping variables](https://ton.org/docs/#/func/builtins?id=dump-variable) in debug - `~dump` Run `~dump(variable_name);` to print a variable's contents. Run `~dump(12345);` to print the number `12345`. Example: ``` () recv_internal(int msg_value, cell in_msg, slice in_msg_body) impure { ;; let's say I want to print the value of the variable msg_value ~dump(msg_value); } ``` Please note that this command will not run on mainnet, so do not deploy production contracts with it. My favorite way to test smart contracts locally is using [ton-contract-executor](https://github.com/Naltox/ton-contract-executor) - this awesome library run a local version of the TVM in web-assembly right inside Node.js, which is very convenient for writing JavaScript/TypeScript tests. To enable debug prints in ton-contract-executor, when you create your contract instance pass `debug: true` in SmartContractConfig and print the logs after interacting with the contract: ```js import { SmartContract } from "ton-contract-executor"; const contract = await SmartContract.fromCell(codeCell, dataCell, { debug: true // enable debug }); const send = await contract.sendInternalMessage(...); console.log(send.logs); // print the logs ```