addliquidityEth failed Returned error:ds-math-sub-underflow

I need help.This problem has been bothering me for several days.

when i apply openTrading()

function openTrading() external onlyOwner {
    require(tradingOpen != true, "trading is already open");
	//uniswapV2Router = IUniswapV2Router02(0x10ED43C718714eb63d5aA57B78B54704E256024E);		// binance PANCAKE V2
	uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);		// Ethereum mainnet, Ropsten, Rinkeby, Görli, and Kovan		 
    //uniswapV2Router = IUniswapV2Router02(0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3); //TestNet BSC Pancake
    _approve(address(this), address(uniswapV2Router), _totalSupply);
    uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
    uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
    IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);

    tradingOpen = true;

Gas estimation failed
Gas estimation errored with the following message (see below). The transaction execution will likely fail. Do you want to force sending?
Returned error: {"jsonrpc":"2.0","error":"execution reverted: ds-math-sub-underflow","id":1385571239006185}

You have to deposit the ETH you want to add liquidity with inside the contract.

uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);

As you see it takes the full eth balance and pair it with the full token balance

I transfer 0.5ETH and all coin to contract before openTrading()

I try change openTrading() to openTrading(uint256 eth, uint256 amount)
still failed Returned error:ds-math-sub-underflow
what can i do ? I'm crashed