Trying to trace error in Stored Procedure using XEvents
You can configure an extended event session with an event:

error_reported: This event gets fired every time that an error happens in the server.

For your particular case you are able to filter events for message_id = 248.

SELECT text FROM sys.messages WHERE message_id = 248



  The conversion of the %ls value '%.*ls' overflowed an int column.


That event contains a field tsql_frame which looks like one below (just an example):

&lt;frame level="2" handle="0x03000500A711127995BB6600B4AA000001000000000000000000000000000000000000000000000000000000" line="83" offsetStart="2634" offsetEnd="3288" /&gt;


So, you got sql_handle plus start and end offsets of the statement you are looking for. And getting the statement (values are from the example above):

SELECT 
    CASE   
        WHEN s.offsetStart &gt; 0 THEN  
            CASE s.offsetEnd  
               WHEN -1 THEN  
                  SUBSTRING(t.TEXT, (s.offsetStart/2) + 1, 2147483647) 
               ELSE   
                  SUBSTRING(t.TEXT, (s.offsetStart/2) + 1, (s.offsetEnd - s.offsetStart)/2+1)   
            END  
        ELSE  
            CASE s.offsetEnd  
               WHEN -1 THEN  
                  RTRIM(LTRIM(t.[text]))  
               ELSE  
                  LEFT(t.TEXT, (s.offsetEnd/2) +1)  
            END  
        END AS [executing statement]
FROM sys.dm_exec_sql_text(0x03000500A711127995BB6600B4AA000001000000000000000000000000000000000000000000000000000000) t
CROSS JOIN (VALUES (2634, 3288) ) s(offsetStart, offsetEnd)