So I'm a student working on a smart contract in Solidity as part of my coursework, and I'm a bit of a blockchain newbie. I've got my contract working now, but there is one function that's causing me problems. It seems to be working fine, except that Remix sometimes tells me that the execution failed (with the above message). I haven't quite pinned down the conditions that cause this yet, because I'm not sure how to go about debugging it.
I've used the IDE debugger to step through the transaction, but it just seems to execute the whole thing and exit. Putting, eg,
require(false, "Made it to the end"); at the end of the function also seems to indicate that it completes (as the error does get thrown). There are also two ETH transfers taking place towards the end of the function (one to the address calling the function, and one to another address that is stored in the contract's state) and these seem to be consistently getting through.
So, to summarise the question: what method am I best off using to figure out the problem? Not really interested in specific solutions to my problem as my code is part of my coursework and I feel like I should know how to solve these problems more generally.
Thanks in advance!